【问题标题】:MVC3 View with multiple models具有多个模型的 MVC3 视图
【发布时间】:2012-11-21 15:17:18
【问题描述】:

我有一个视图模型。此视图包含一个 @Html.DropDownList,其值在模型中。如何让我的视图将两种模型用于程序的不同部分?

例如,我有

@model IEnumerable<projectname.mymodel>
@{
   ViewBag.Title = "my title"
 }
 <!--This should use a different model-->
 <p>@Html.DropDownList(m =>m.name), new set(Model.list, "value", "key"))

如果我有模型 1 和模型 2(连接到数据库) - 都存储在模型文件夹中;和一个大模型类,比如

public class MyViewModel {
   public model1 var1 { get; set; }
   public IEnumerable<projectname.Model.model2> var2 { get; set; }
}

我认为这个模型是:

@model ProjectName.Models.Models

如何引用模型 1 或模型 2 中的项目?

【问题讨论】:

    标签: asp.net-mvc-3 visual-studio view model


    【解决方案1】:

    只需将一个新类作为模型传递给您的视图,其中包含您需要的所有数据:

    public class MyViewModel {
        public SelectList list { get; set; }
        public IEnumerable<projectname.mymodel> Items { get; set; }
    }
    

    另一种方法是在 Viewbag 中传递列表:

    Viewbag.list = new SelectList() ...
    

    【讨论】:

    • Viewmodel 是一个更好的解决方案。不要使用 Viewbag 传递模型。
    • @jpo 你必须在你的视图中引用这样的模型:@model MyViewModel。然后你可以使用Model.var1Model.var2来访问这两个属性。
    • 这就是我的想法,但是当我尝试这样做时,得到的错误是:传递到字典中的模型项的类型为'System.Collections.Generic.List`1[ProjectName.Models .Model1]',但此字典需要“ProjectName.Models.Model2”类型的模型项。 Model1 和 Model2 是我的新类 Model 中的两个模型
    • @jpo 那么您的操作作为模型返回的类型与您查看声明为模型类型的类型不匹配。
    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    相关资源
    最近更新 更多