0

我有一个场景,在某个视图上我可以有 2 个相同类型的不同对象[Customer]。第一个叫Customer,另一个叫CustomerApprove。后者包含要批准的客户数据的更改。

如果CustomerApprove对象已填充,我希望文本框包含该值。否则我想使用正常的Customer对象值。

我想到了两种方法来实现这一点。

  1. 使用 @value 初始值设定项和内联 IF 语句

    Html.TextBoxFor(m => Customer.City, new { @Value = somecondition ? CustomerApprove.City : Customer.City })

  2. 调用模型上的方法以确定要使用的对象。

    Html.TextBoxFor(m => Customer.City, new { @Value = Model.SomeMethodToGetTheValue() })

哪个是更好的使用方法,或者还有其他建议吗?

4

2 回答 2

4

我建议您使用视图模型并在控制器中填充相应的属性,以便在视图中您可以简单地:

@Html.TextBoxFor(x => x.CustomerCity)

在基于模型值的控制器操作中,您将CustomerCity分别填充视图模型属性。

于 2011-04-28T09:07:29.990 回答
1

如何为 Customer 和 CustomerApproved 创建视图模型。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; }
}
于 2011-04-28T09:08:24.073 回答