【问题标题】:DRY in ASP.NET MVC - details display vs. edit formASP.NET MVC 中的 DRY - 详细信息显示与编辑表单
【发布时间】:2009-01-04 20:26:25
【问题描述】:

我正在尝试学习 ASP.NET MVC,但遇到了这个问题:我有一个“查看产品详细信息”表单,我想将其用作添加/编辑表单。 (当您查看产品详细信息时,如果您有权这样做,应该会出现一个编辑链接;它应该重新显示相同的表单,但这次启用了文本框字段。)

现在细节视图看起来像这样:

<% var product = ViewData.Model; %>
<table>
  <tr>
    <td>Name</td>
  </tr>
  <tr>
    <td><%= Html.TextBox("Name", product.Name, new { size = "50", disabled = "disabled"})%></td>
  </tr>

有没有一种方法可以重用它而不在视图中添加太多逻辑?例如,我需要删除disabled = "disabled" 部分(但size 部分需要保留在那里),将所有内容放入表单等等。

如果做不到,那也没关系,我只是尽量不要重复同样的事情几次,以防我需要改变它(我会的)。

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    使用MvcContrib.FluentHtml 你可以这样做(增强托德史密斯的建议):

    <%=this.TextBox(x => x.Name).Size(50).Disabled(ViewData.Model.CanEdit)%>
    

    【讨论】:

    • 谢谢...我想我需要调查一下。我将 Todd 的回复标记为答案,因为无论如何我都需要这样做,但你的建议也很好。
    【解决方案2】:

    您始终可以传入一个值,指示您所处的模式或您拥有的权限:

    ViewData.Model.CanEdit
    

    因此您可能希望为您的模型创建一个复合类,而不仅仅是使用 Product

    public class ProductViewData
    {
        public Product Product {get; set;}
        public bool CanEdit {get; set;}
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多