例如,我有3个模型,其中包含Id(int),一个Name(字符串)和一个active(bool)。对于具有相同属性的这些模型,可以只使用一个视图吗?像通用对象这样的技术?继承?这是为了避免使用相同的HTML代码编写多个视图。
答案 0 :(得分:2)
您可以创建ViewModel。
样本:
public class CustomerViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public bool Active { get; set; }
}
使用如下类型创建另一个ViewModel:
public class CustomersViewModel
{
public CustomerViewModel Customer1 { get; set; }
public CustomerViewModel Customer2 { get; set; }
public CustomerViewModel Customer3 { get; set; }
}
并使用以下类型输入您的视图:
@model CustomersViewModel
或者只是使用一个集合来输入您的视图
@model List<CustomerViewModel>
看看这个anwser! https://stackoverflow.com/a/694179/316799
答案 1 :(得分:1)
在视图中,您可以
dynamic
作为模型使用继承提取共享部分的示例。使用Html.Partial呈现共享部分:
class SharedModel { /* Id,...*/ }
class SpecificModel : SharedModel { /* Special... */ }
SpecificView:
@model SpecificModel
@Html.Partial("SharedView", Model)
<div>@Model.Special</div>
SharedView:
@model SharedModel
<div>@Model.Id</div>
附注:如果视图名称与操作名称不匹配,则可以在使用View返回结果时指定视图名称:
return View("MySharedView", model);
答案 2 :(得分:0)
在ASP.NET MVC4中,您有机会不为视图定义模型。这意味着将模型的定义留空(不要使用@model MyNamespace.MyClass)然后它将自动使用“dynamic”作为模型。
问候 基督教