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

https://www.cnblogs.com/wskxy/p/9318123.html

先定义一个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>

posted @ 2020-01-23 10:01  清语堂  阅读(600)  评论(0编辑  收藏  举报