【问题标题】:Models for View in MVCMVC 中的视图模型
【发布时间】:2012-09-23 19:08:54
【问题描述】:

我有一个关于如何使用 MVC 模式正确地将数据传递给视图的问题。

我有一个 EditProfile/Register 模型(姓名、电子邮件、国家/地区)。视图有一个国家下拉列表,我需要向它传递一个国家列表。

创建一个新模型(仅用于视图)是否正确,它基本上封装了我的 EditProfile/Register 模型和一个列表?我是否在控制器中创建此视图特定模型? (与我的数据访问项目相反)。

谢谢!

【问题讨论】:

  • 澄清一下,您使用的是 ASP.Net MVC 吗?如果是这样,请将特定于版本的标签添加到您的问题中,而不仅仅是 mvc 标签。因此,如果您使用的是 ASP.Net MVC 2,请使用 asp.net-mvc-2 标记。

标签: c# asp.net-mvc model-view-controller asp.net-mvc-4


【解决方案1】:

视图模型(用于 ASP.Net MVC 视图)与域模型(数据层中的一个)无关,除了名称。这个MVC: Data Models and View Models 问题详细介绍了差异/相似之处。

您在 ASP.Net MVC 项目中的某处(不在数据层中)创建视图模型,并且通常将“模型”或“视图模型”文件夹与 Controllers 文件夹同级放置。根据视图,一些视图模型类可以共享,但您也会有一些由单个视图使用。

【讨论】:

    【解决方案2】:

    你有两种方法来完成这项任务

    (i) 推荐

    创建视图模型 添加选择列表类型的属性

    <code>
    
        public SelectList countrylist
            {
                get;
                set;
            }
    </code>
    

    在视图模型类的构造函数中,从国家表中分配国家列表。

    <code>
    
         countrylist= new SelectList(db.countries.ToList(), "CountryID", "CountryName");
    
    </code>
    

    在你添加的视图中

    <code>
         Html.DropDownList("CountyID", Model.countrylist,"Select")
    </code>
    

    (ii)仅当您必须使用此模型且视图很少时才使用(如您的情况所示)

    不要创建视图模型,而是使用 jquery,并在已准备好查看页面的文档中添加国家列表的 html 选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 2013-02-27
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多