我有一个场景,在某个视图中,我可以拥有2个相同类型[Customer]
的不同对象。第一个称为Customer
,另一个称为CustomerApprove
。后者包含要批准的客户数据的更改。
如果CustomerApprove
对象已填满,我希望文本框包含该值。否则我想使用正常的Customer
对象值。
我想到了两种方法来实现这一目标。
使用@value初始值设定项和内联IF语句
Html.TextBoxFor(m => Customer.City, new { @Value = somecondition ? CustomerApprove.City : Customer.City })
调用Model上的方法以确定要使用的对象。
Html.TextBoxFor(m => Customer.City, new { @Value = Model.SomeMethodToGetTheValue() })
哪种方法更好用,还是有其他建议?
答案 0 :(得分:4)
我建议您使用视图模型并在控制器中填充相应的属性,以便在视图中可以简单地:
@Html.TextBoxFor(x => x.CustomerCity)
在基于模型值的控制器操作中,您将分别填充CustomerCity
视图模型属性。
答案 1 :(得分:1)
如何为Customer和CustomerApproved创建View模型。 ViewModel将公开一些常见属性(例如City),您只需从控制器返回ViewModel。我正在考虑这些方面的事情:
public class CustomerViewModel
{
public CustomerViewModel(Customer customer)
{
this.City = customer.City;
}
public CustomerViewModel(CustomerApprove customerApprove)
{
this.City = customerApprove.City;
}
public object City { get; set; }
}