【问题标题】:About Asp.Net MVC Helper Html.Hidden关于 Asp.Net MVC Helper Html.Hidden
【发布时间】:2011-10-24 17:00:10
【问题描述】:

我有以下型号

Public Class BaseViewModel

Public Property Id as integer
Public Property Title As String

<DisplayName("Creation Date"), Required(), ScaffoldColumn(False)>
Public Property DateCreation As String
<DisplayName("Creation User"), Required(), ScaffoldColumn(False)>
Public Property UserCreation As String
<DisplayName("Modification Date"), ScaffoldColumn(False)>
Public Property DateModification As String
<DisplayName("Modification User"), ScaffoldColumn(False)>
Public Property UserModification As String

End Class

我创建了一个名为 BaseViewModel 的局部视图,它具有以下 HTML

<div id="Detail-Item" class="hidden">
@Using Html.BeginForm("Save", "Agency", Nothing, FormMethod.Post, New With {.id = "Detail-form"})
@<fieldset>
    <legend>Agency</legend>
    @Html.ValidationSummary()
    <div class="editor-label"> 
        @Html.LabelFor(Function(model) model.Id):
    </div>
    <div class="editor-field">
        @Html.TextBoxFor(Function(model) model.Id, New With {.class = "textbox-id input-key textbox-inactive", .data_field = "Id", .readonly = "readonly"})    
        @Html.ValidationMessageFor(Function(model) model.Id, "*")
    </div>
    <div class="editor-label">
        @Html.LabelFor(Function(model) model.Title):
    </div>
    <div class="editor-field">
        @Html.TextBoxFor(Function(model) model.Title, New With {.class = "textbox-name input-text focus", .data_field = "Title"})
        @Html.ValidationMessageFor(Function(model) model.Title, "*")
    </div>

    <div class="hidden">
        @Html.Hidden("UserCreation", String.Empty, New With {.class = "input-audituser", .data_field = "UserCreation"})
        @Html.Hidden("UserModification", String.Empty, New With {.class = "input-audituser", .data_field = "UserModification"})
        @Html.Hidden("DateCreation", String.Empty, New With {.class = "input-auditdate", .data_field = "DateCreation"})
        @Html.Hidden("DateModification", String.Empty, New With {.class = "input-auditdate", .data_field = "DateModification"})
    </div>
</fieldset>
End Using
</div>

为了呈现这个视图,我使用了@html.EditForModel。我的问题是,即使我将 Html.Hidden 用于 DateCreation 和 UserCreation 模型属性,为这些字段生成的 Html 也包含“必需”数据验证属性。

这是它应该工作的方式吗?如果是,如何避免这种情况?

【问题讨论】:

  • 这没什么问题。

标签: .net asp.net-mvc asp.net-mvc-3 asp.net-mvc-2


【解决方案1】:

鉴于您提供的模型,这是预期的行为。模型将这两个属性都指定为必需,因此隐藏字段将添加不显眼的验证属性。

【讨论】:

    【解决方案2】:

    隐藏并不意味着它不会被验证。 为什么不在局部视图中设置正确的日期/时间,而不是用空字符串初始化那些隐藏字段。 像 DateTime.Now 这样的东西应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2014-12-09
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      相关资源
      最近更新 更多