我是 MVC3 的新手。当我创建一个强类型视图时,它在视图代码文件的顶部使用此代码
@model MonoPoly.Models.LandDocument
所以这意味着视图可以使用该模型类的所有属性(这里是这个 LandDocument 模型类)。但我的问题是如何将更多模型类作为这个单一视图文件的强类型?或者我应该如何在这个视图中调用其他模型类属性,它已经使用该 LandDocument 模型类进行了强类型化?
对不起,我的英语不好。
我是 MVC3 的新手。当我创建一个强类型视图时,它在视图代码文件的顶部使用此代码
@model MonoPoly.Models.LandDocument
所以这意味着视图可以使用该模型类的所有属性(这里是这个 LandDocument 模型类)。但我的问题是如何将更多模型类作为这个单一视图文件的强类型?或者我应该如何在这个视图中调用其他模型类属性,它已经使用该 LandDocument 模型类进行了强类型化?
对不起,我的英语不好。
一种方法是创建一个ViewModel
对象,其中包含您希望在视图中引用的所有对象。在Steve Michelotti 的博客上查看如何实现 ViewModel 模式的详细信息:模式 2 –包含域模型对象的专用视图模型
例如,如果你想要一个LandDocument
类和一个Player
类,你可以创建一个ViewModel
这样的:
public class BoardViewModel
{
public LandDocument LandDocument { get; set; }
public Player LandOwner { get; set; }
}
然后在您的视图顶部:
@model MonoPoly.ViewModels.BordViewModel
您可以像这样访问视图中的数据,例如:
@Model.LandDocument.LandDocumentId
创建一个复合视图模型类来封装您需要的所有对象。
例子:
public class InvoiceViewModel
{
public InvoiceHeader Header { get; set; }
public List<InvoiceDetail> Details { get; set; }
}