2011-04-28 99 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視圖模型屬性。