必需的元数据验证不适用于部分视图

时间:2013-10-31 15:42:21

标签: asp.net asp.net-mvc data-annotations

我在asp.net mvc-4中有以下主视图: -

@model TMS.ViewModels.SwitchJoin

@Ajax.ActionLink("Add Port Info", "CreatePort","Switch",
    new { switchid = Model.Switch.SwitchID },
    new AjaxOptions {
 InsertionMode = InsertionMode.Replace,
 UpdateTargetId = "AssignPort"  ,
 LoadingElementId = "progress"


}
)
</p>
//code goes here


@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

以下两个部分视图; -

@model TMS.Models.TMSSwitchPort



@using (Ajax.BeginForm("CreatePort", "Switch", new AjaxOptions

{
    InsertionMode = InsertionMode.InsertAfter,
    UpdateTargetId = "Porttable",
    LoadingElementId = "loadingimag",
    HttpMethod= "POST",
    OnSuccess="submitform"
}))
{
@Html.ValidationSummary(true)
 @Html.HiddenFor(model=>model.SwitchID)
@Html.Partial("_CreateOrEditPort", Model)
 <input type="submit" value="Save" class="btn btn-primary"/>
}

&安培;&安培;&安培;

@model TMS.Models.TMSSwitchPort
 @Html.AntiForgeryToken()
<div>
<span class="f">Device Tag</span> 

@Html.TextBoxFor(model => model.Technology.Tag)
@Html.ValidationMessageFor(model => model.Technology.Tag)                                              


 <span class="f"> Port Number</span>       
@Html.TextBoxFor(model => model.PortNumber)
@Html.ValidationMessageFor(model => model.PortNumber)                                              



</div>

我有以下Meta类型Model类: -

    public class TMSSwitchPort_Validation
    {

        [Required]

        public string PortNumber { get; set; }


    }
}

但是在__CreateOrEditPort局部视图中,所需的验证不会触发?有人可以建议吗?

1 个答案:

答案 0 :(得分:0)

回答@ develiper10214是对的,但你也写了MetaType模型类。我觉得,你想要你的类的MetadataType类。

如果是的话。你需要看一些规则。

  1. 您的类和元数据类需要在同一名称空间中(如果您在EF数据库第一和部分模型类中使用此元数据)。
  2. 您需要“告诉”您的课程,而不是使用元数据课程。
  3. 类和元数据类中的字段必须相同。
  4. 示例:

    namespace TMS.Models
    {
       public partial class TMSSwitchPort
       {
            public string PortNumber { get; set; }
       }
    }
    

    另一堂课:

    namespace TMS.Models
    {
        [MetadataType(typeof(TMSSwitchPortMetadata))]
        public partial class TMSSwitchPort
        {
            //Nothing
        }
    
        public class TMSSwitchPortMetadata
        {
            [Required]
            public string PortNumber { get; set; }
        }
    }