zoukankan      html  css  js  c++  java
  • ASP.NET MVC Controller向View传值的几种方式

    1)ViewBag

      ViewBag是动态类型,使用时直接添加属性赋值即可 ViewBag.myName

        控制器代码:

    1 public ActionResult Index()  
    2 {  
    3     ViewBag.name = "梁顺盛";  
    4     ViewBag.message = "欢迎使用MVC设计模式~~";  
    5     return View();  
    6 }  

    视图代码:

    <div>          
        <!--利用HtmlHelper创建TextBox时,使用名称与ViewBag中的Key一致, 就会自动实现值绑定-->  
        @Html.TextBox("name")  
        @ViewBag.message          
    </div> 

    2)ViewData

         ViewData只对当前Action有效,它是一个字典集合,通过key值读取对应的value;

         控制器代码:

    public ActionResult Index()  
            {  
                ViewData["name"] = "梁顺盛";  
                ViewData["message"] = "欢迎使用MVC设计模式~~";  
                return View();  
            }  

    视图代码:

    <div>          
            <!--利用HtmlHelper创建TextBox时,使用名称与ViewData中的Key一致, 就会自动实现值绑定-->  
            @Html.TextBox("name")  
            @ViewData["message"]          
        </div> 

    3)TempData

        使用TempData和使用ViewData方法是一样的,但是它可用于在不同的Action之间传值,这是ViewData做不到的。

       控制器代码:

    public class MVCController : Controller  
    {     
        public ActionResult Index1()  
        {  
            TempData["name"] = "梁顺盛";              
            return View();  
        }  
      
        public ActionResult Index2()  
        {  
            string strName = TempData["name"].ToString()  
            return View();  
        }  

    上面的代码中,Index()给TempData添加了一个键值对,假设我们先请求Index这个Action,接着请求Index2这个Action,那么在Index2中,我们便可以得到之前添加到TempData的键值对。有趣的是,这时如果再次请求Index2,那么从TempData中读到的MyName的值会是null。这是因为TempData和一个临时的Session差不多,当Acion执行的时候它做为一个全局对象保存的内存中,而一旦Action的执行完成,就会释放内存空间,这就是它与ViewData最大的不同之处。

    4)Model

         Controller通过Model传值应该是MVC中使用最为普遍的一种传值方式,通过强类型绑定,在View中可以很方便的通过Model的相应属性得到想要的值。

         Model代码:

    public partial class YzAdministratorEntity  
    {  
        public YzAdministratorEntity()  
        {  
            this.YzClearRecordEntity = new HashSet<YzClearRecordEntity>();  
            this.YzNotifyInfoEntity = new HashSet<YzNotifyInfoEntity>();  
        }  
      
          
        public System.Guid ID { get; set; }  
        public string AdminPassword { get; set; }  
        public string AdminName { get; set; }  
        public bool isUsed { get; set; }  
      
        [Required(AllowEmptyStrings = false, ErrorMessage = "用户ID不能为空")]  
        public string AdministratorID { get; set; }  
        public string AdminLevel { get; set; }  
      
        public virtual ICollection<YzClearRecordEntity> YzClearRecordEntity { get; set; }  
        public virtual ICollection<YzNotifyInfoEntity> YzNotifyInfoEntity { get; set; }  
    }  

    视图代码:

    强类型绑定:

    @model Model.YzAdministratorEntity

    通过Linq自动匹配Model和Label或TxtBox的属性值:

    <div>  
        <span class="editor-label">  
            @Html.Label("编号:")  
        </span>  
        <span class="editor-field">  
            @Html.EditorFor(a => a.AdministratorID)  
            @Html.ValidationMessageFor(model => model.AdministratorID)  
        </span>  
    </div>  
      
    <div>  
        <span class="editor-label">  
            @Html.Label("密码:")  
        </span>  
        <span class="editor-field">  
            @Html.EditorFor(a => a.AdminPassword )  
        </span>  
    </div>  
      
    <div>  
        <span class="editor-label">  
            @Html.Label("真实姓名:")  
        </span>  
        <span class="editor-field">  
            @Html.EditorFor(a => a.AdminName )  
        </span>  
    </div>  
  • 相关阅读:
    Nginx 部署多个 web 项目(虚拟主机)
    Nginx 配置文件
    Linux 安装 nginx
    Linux 安装 tomcat
    Linux 安装 Mysql 5.7.23
    Linux 安装 jdk8
    Linux 安装 lrzsz,使用 rz、sz 上传下载文件
    springMVC 拦截器
    spring 事务
    基于Aspectj 注解实现 spring AOP
  • 原文地址:https://www.cnblogs.com/liangss/p/5122503.html
Copyright © 2011-2022 走看看