2011-04-28 95 views
0

我有一个场景,在某个视图中,我可以有2个不同的相同类型的对象[Customer]。第一个叫做Customer,另一个叫做CustomerApprove。后者包含要批准的客户数据的更改。ASP.NET MVC Html.TextBoxFor动态值

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

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

  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() })

哪个是更好的方法来使用,还是有什么其他的建议?

回答

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; } 
} 
4

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

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

在控制器的动作基础上,你会填充模式的值分别为CustomerCity视图模型属性。