那么,我们来看一个例子。我有一个看起来像这样的客户视图模型:在哪里放置与视图数据无关的额外视图数据
public class CustomerViewModel {
public string Name {get; set;}
public int CustomerTypeId {get; set;}
}
在UI上需要下拉客户类型。为了填充这些,需要到业务层或数据层并获取这个客户类型列表。
在我看来,这个逻辑并不真正属于CustomerViewModel,因为它不是真正的客户数据;只有CustomerTypeId是。所以我的问题是,在一般情况下(不一定在.net MVC中,但是MVC视图模型概念的一般实践)人们把这些数据访问了吗?
在视图模型本身中有一个名为GetCustomerTypes()的函数是否可以接受?
public class CustomerViewModel {
public string Name {get; set;}
public int CustomerTypeId {get; set;}
public List<CustomerType> GetCustomerTypes() { ... }
}
我应该在业务层或助手中创建一个类/方法,并在视图中手动导入代码以访问此函数吗?在我看来,这将是代码混乱的观点,并不属于那里。
@{
using My.App.CustomerTypeHelper;
var helper = new CustomerTypeHelper();
var customerTypes = helper.GetCustomerTypes();
}
...
@Html.DropDownFor(x => x.CustomerTypeId, customerTypes)
全球HTML帮助缓解这个问题在.net了一点,但我要寻找一个更具全球性的解决方案概念,我可以适用于PHP代码等也。 PHP不具备干净地拥有静态类的能力,可以使用扩展方法将其分为小型组织单元。所以任何全球帮手都可能变得庞大而丑陋。
这似乎会变得更加讨厌。这会导致在更多的实际场景中有大量的操作方法和控制器,其中有多个查找下拉菜单。它是否会在实践中出现这种情况,还是我只是过分偏执? – computrius