【问题标题】:ASP.NET MVC Html.TextBoxFor dynamic valueASP.NET MVC Html.TextBoxFor动态值
【发布时间】:2011-04-28 09:04:06
【问题描述】:

我有一个场景,在某个视图上我可以有 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() })

哪种方法更好用,或者有其他建议吗?

【问题讨论】:

    标签: asp.net-mvc html-helper html.textbox


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      如何为 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; }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-07
        • 2021-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        • 1970-01-01
        相关资源
        最近更新 更多