Core Mvc傳值ViewData、ViewBag和return view(model)


先定義一個Model類Student

namespace Lession.Models
{
    public class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Sex { get; set; }
    }
}

控制器如下:

using Lession.Models;
using Microsoft.AspNetCore.Mvc;

namespace Lession.Controllers
{
    public class TestController : Controller
    {
        public IActionResult Index()
        {
            ViewData["name"] = "kxy";
            ViewData["sex"] = "";
            ViewData["age"] = 22;

            ViewBag.Name = "kxy";
            ViewBag.Sex = "";
            ViewBag.Age = 22;

            Student student = new Student() { Name="kxy",Age=22,Sex=""};
            return View(student);
        }

    }
}

視圖如下:

<body>
    @*ViewData是進行靜態數據傳遞*@
    @ViewData["name"]
    @ViewData["sex"]
    @ViewData["age"]
    <br />

    @*ViewBag是對ViewData的封裝,進行動態數據傳遞*@
    @ViewBag.Name
    @ViewBag.Sex
    @ViewBag.Age
    <br />

    @*Model也是進行動態數據傳遞,需要控制器return一個model*@
    @Model.Name
    @Model.Age
    @Model.Sex
</body>

  在這里,可以對Model進行類型定義,在視圖上方加入

@model Lession.Models.Student

  這樣,就可以在書寫Model的時候自動補全屬性

  也可以使用后台語法添加控件,並利用model顯示數據

    @*使用后台語法添加控件,利用lambda表達式輸出內容,這里的m指的就是上面定義的model*@
    @Html.TextBoxFor(m => m.Name)
    @Html.TextBoxFor(m => m.Sex)
    @Html.TextBoxFor(m => m.Age)

   且這個控件的Id和Name屬性的值均為Student對應的屬性名稱

  即

    @Html.TextBoxFor(m => m.Name)
 對應生成
    <input id="Name" name="Name" type="text" value="kxy">


2.特性DisPlayName
  這個特性可以添加在類的屬性上面,做屬性名稱解釋
  如:在Name上面添加特性
DisPlayName
using System.ComponentModel;
namespace
Lession.Models { public class Student { [DisplayName("這里是kxy的名字")] public string Name { get; set; } public int Age { get; set; } public string Sex { get; set; } } }

  視圖代碼:

    @*輸出屬性的特性DisplayName*@
    @Html.LabelFor(m => m.Name)

  結果:

    編譯生成:<label for="Name">這里是kxy的名字</label>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM