我使用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。
希望有人能理解。
感谢
答案 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>
您正在做的是获取父视图的模型。然后检查它的类型。