代码之家  ›  专栏  ›  技术社区  ›  Jean-Francois

如何启用或禁用实体验证

  •  0
  • Jean-Francois  · 技术社区  · 14 年前

    我使用实体框架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 回复  |  直到 14 年前
        1
  •  0
  •   jcruz    14 年前

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