О Asp.Net Вспомогательный HTML-код MVC.Скрытый

#.net #asp.net-mvc #asp.net-mvc-3 #asp.net-mvc-2

#.net #asp.net-mvc #asp.net-mvc-3 #asp.net-mvc-2

Вопрос:

У меня есть следующая модель

 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.Скрытый для свойств моделей DateCreation и UserCreation HTML, созданный для этих полей, содержит атрибут проверки «обязательных» данных.

Так ли это должно работать?, если да, то как этого избежать?

Комментарии:

1. В этом нет ничего плохого.

Ответ №1:

Учитывая предоставленную вами модель, это ожидаемое поведение. Модель определяет оба свойства как требуемые, поэтому в скрытые поля будут добавлены ненавязчивые атрибуты проверки.

Ответ №2:

Скрытый не означает, что он не будет проверен. Почему бы вам просто не установить правильную дату / время в вашем частичном представлении, вместо того, чтобы инициализировать эти скрытые поля пустой строкой. Что-то вроде даты и времени.Теперь должно сработать.