我是新的MVC3。当我创建一个强类型的视图它的视图代码文件MVC3更强类型模型类
@model MonoPoly.Models.LandDocument
使用此代码的顶部,这样就意味着视图可以使用所有属性从Model类(这里这个LandDocument模型类)。但我的问题是我怎么能用更多的模型类作为这个单一的视图文件的强类型?或者我应该如何在这个视图中调用其他模型类属性,这个视图已经被LandDocument Model类强制类型化了?
对不起,我的英语不好。
我是新的MVC3。当我创建一个强类型的视图它的视图代码文件MVC3更强类型模型类
@model MonoPoly.Models.LandDocument
使用此代码的顶部,这样就意味着视图可以使用所有属性从Model类(这里这个LandDocument模型类)。但我的问题是我怎么能用更多的模型类作为这个单一的视图文件的强类型?或者我应该如何在这个视图中调用其他模型类属性,这个视图已经被LandDocument Model类强制类型化了?
对不起,我的英语不好。
一种方法是创建一个ViewModel
对象包含所有你想在视图中引用的对象。查看如何落实Steve Michelotti's blog: Pattern 2 – Dedicated view model that contains the domain model object
例如视图模型模式,如果你想既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; }
}
我不明白你的答案你能让我了解更多细节吗?请 ? – zxprince
我提供的'InvoiceViewModel'示例是您将传递给View的内容。您可以将发票标题称为“Model.Header”,并将发票明细称为“Model.Details”。你可以参考这些单独的字段,如'Model.Header.Name','Model.Header.Address'等。 –
[如何在单个Razor视图中编辑多个模型]的可能重复(http://stackoverflow.com/questions/10720756/how-to-edit-multiple-models-in-a-single-razor-查看) –