0

例如,我有 3 个具有 Id (int)、Name (string) 和 active (bool) 的模型。对于具有相同属性的这些模型,是否可以只使用一个视图?像通用对象这样的技术?继承?这是为了避免使用相同的 HTML 代码编写多个视图。

4

3 回答 3

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>

看看这个答案! https://stackoverflow.com/a/694179/316799

于 2013-04-05T17:14:28.437 回答
1

在视图中,您可以

  • 为所有模型指定共享基类并使用它。
  • 用作dynamic模型
  • 拆分共享视图(提取到单独视图)和特定部分。比使用现有模型(如果使用基类/动态模型)或简单地基于特定模型中的数据构建的新模型调用共享子视图。

使用继承提取共享部分的示例。使用Html.Partial呈现共享部分:

class SharedModel { /* Id,...*/ }
class SpecificModel : SharedModel { /* Special... */ }

具体视图:

@model SpecificModel 
@Html.Partial("SharedView", Model)
<div>@Model.Special</div>

共享视图:

@model SharedModel 
<div>@Model.Id</div>

旁注:如果视图名称与操作名称不匹配,您可以在返回结果时使用View指定视图名称:

return View("MySharedView", model);
于 2013-04-05T17:14:53.697 回答
0

在 ASP.NET MVC4 中,您有机会不为视图定义模型。这意味着将模型的定义留空(不要使用@model MyNamespace.MyClass),然后它将自动使用“动态”作为模型。

问候基督徒

于 2013-04-05T17:55:57.633 回答