Как включить или отключить проверку сущности - PullRequest
0 голосов
/ 26 сентября 2010

Я использую Entity Framework 4 и MVC 2.
У меня есть адрес субъекта, контакт, компания.
Между контактом, адресом и компанией и адресом существует связь. У контакта может быть адрес, и у компании тоже может быть адрес.

Я создал частичное представление для адреса.

<div class="editor">   
        <%: Html.HiddenFor(model => model.AddressID) %>
        <%: Html.HiddenFor(model => model.AddressID) %>
        <div class="editor-label">
            <%: Html.LabelFor(model => model.CivicNumber) %>
        </div>

        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.CivicNumber)%>
            <%: Html.ValidationMessageFor(model => model.CivicNumber)%>
        </div>
    </div>

    <div class="editor">      
        <div class="editor-label">
            <%: Html.LabelFor(model => model.Street) %>
        </div>

        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Street)%>
            <%: Html.ValidationMessageFor(model => model.Street)%>
        </div>
    </div> ......

Я называю это Частичное представление в моем Контакте и Представлении компании с EditorFor.

В классе адресов у меня была некоторая проверка.
Пример: требуется гражданский номер.

[Required(ErrorMessage = "Civic Number is Required")]
[DisplayName("Civic Number")]
public object CivicNumber { get; set; }

Возможно ли активировать эту проверку только когда я вызываю адрес из контакта. Другими словами. Если я вызываю Address.ascx из представления компании, я не хочу никакой проверки для полей адреса. Если я вызываю Address.ascx из представления контактов, я хочу проверить поля адресов.

Надеюсь, кто-то поймет.
Спасибо

1 Ответ

0 голосов
/ 28 сентября 2010

Я не совсем уверен, но попробуйте.

В вашем частичном представлении

<% bool outputValidation = this.ViewContext.Controller.ViewData.Model.GetType() == typeof(Contact) %>

<div class="editor">   
    <%: Html.HiddenFor(model => model.AddressID) %>
    <%: Html.HiddenFor(model => model.AddressID) %>
    <div class="editor-label">
        <%: Html.LabelFor(model => model.CivicNumber) %>
    </div>

    <div class="editor-field">
        <%: Html.TextBoxFor(model => model.CivicNumber)%>
        <%: outputValidation ? Html.ValidationMessageFor(model => model.CivicNumber) : "" %>
    </div>
</div>

То, что вы делаете, это получение модели родительского представления. Тогда просто проверьте его тип.

...