先定义一个 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>
来源: http://www.bubuko.com/infodetail-3392955.html