如何启用或禁用实体验证

时间:2010-09-26 15:43:15

标签: asp.net-mvc-2 entity-framework-4 entity-relationship

我使用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我不想要对地址字段进行任何验证。如果我从Contact View调用Address.ascx,我想要验证Address Fields。

希望有人能理解。
感谢

1 个答案:

答案 0 :(得分:0)

我不完全确定但是试一试。

在局部视图中

<% 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>

您正在做的是获取父视图的模型。然后检查它的类型。