视图中的MVC 3 2模型

时间:2011-11-17 11:45:18

标签: c# asp.net asp.net-mvc-3

我是MVC的新手(即最近几天),我想知道我所做的是最好的方式。

我有一个视图,它是一个插入项表单与特定实体下面的列表详细信息表单的组合。因此,我需要2个模型用于页面,以避免执行@Html.LabelFor(model => model.FirstOrDefault().EventTypeID, "Event Type")

之类的操作

我所做的是将模型设置为Tuple<IEnumerable<Event>,Event>,这样我既有单项也有项目集合。任何人都可以提出一个不太常见的替代方案,或者这是最好的方法吗?

3 个答案:

答案 0 :(得分:5)

有两种解决方案。

  • 您应该创建一个不同的View Model Class(一个简单的类,两个模型都作为属性)
  • 您可以将它分配给ViewBag.Model1 ... ViewBag.Model2 ......但这是动态的,因此您将没有智能感知,并且您可以在运行时获得错误。

您应该使用像这样的ViewModel

public class ViewModel
{
    public TypeOfYourModel MyModel1 { get; set; }
    public TypeOfYourModel MyModel2 { get; set; }
}

答案 1 :(得分:1)

我建议您创建一个包含您想要传递的对象的ViewModel。

public class NewEventViewModel
{
    public Event NewEvent { get; set; }
    public Event EventDetails { get; set; }
}

你也可以使用ViewBag,但它没有强类型,因此你不会获得IntelliSense。

答案 2 :(得分:0)

我会为视图创建一个Model对象,有2个属性,一个用于单个实体,一个用于集合,然后您可以将此组合对象作为视图模型传递