C# EditorFor内部的ASP MVC字段验证
我有一个表单,其中一个字段很复杂,所以我为该字段创建了一个自定义编辑器。 以下是编辑器的主要形式部分:C# EditorFor内部的ASP MVC字段验证,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我有一个表单,其中一个字段很复杂,所以我为该字段创建了一个自定义编辑器。 以下是编辑器的主要形式部分: <div class="form-group"> <label class="col-md-3 control-label">@i18n.Translations</label> <div class="control-group col-md-9"> @Html.EditorFor(m => m.Trans
<div class="form-group">
<label class="col-md-3 control-label">@i18n.Translations</label>
<div class="control-group col-md-9">
@Html.EditorFor(m => m.Translations)
</div>
</div>
以下是自定义编辑器:
@using XXX.i18n
@using XXX.ViewModels
@model XXX.ViewModels.ServiceTranslation
@{
bool translationNameValid = Html.ViewData.ModelState.IsValidField(Html.IdFor(m => m.TranslationName).ToString());
bool translationDescriptionValid = Html.ViewData.ModelState.IsValidField(Html.IdFor(m => m.TranslationDescription).ToString());
}
<div class="form-group">
@Html.HiddenFor(m => m.EntityLanguageId)
@Html.HiddenFor(m => m.Language)
@Html.HiddenFor(m => m.TranslationId.Left)
@Html.HiddenFor(m => m.TranslationId.Right)
<div class="col-md-6">
<div class="input-group @(translationNameValid ? null : "state-error")">
<span class="input-group-addon">@Model.Language</span>
@Html.TextBoxFor(m => m.TranslationName, new { @placeholder = i18n.Name, @class = "form-control" })
</div>
<div class="@(translationNameValid ? null : "state-error")">
<em for="@Html.IdFor(m => m.TranslationName)" class="invalid">@Html.ValidationMessage("TranslationName")</em>
</div>
</div>
<div class="col-md-6 @(translationDescriptionValid ? null : "state-error")">
@Html.TextBoxFor(m => m.TranslationDescription, new { @placeholder = i18n.Description, @class = "form-control" })
<em for="@Html.IdFor(m => m.TranslationDescription)" class="invalid">@Html.ValidationMessage("TranslationDescription")</em>
</div>
</div>
另外,我应该提到的是,主表单位于分部中,TranslationName和TranslationDescription是两个必填字段,在ViewModel中用[required]注释
@Html.ValidationMessage返回所需的字段消息,文本框为空
我的问题是translationDescriptionValid和translationNameValid始终为true,当字段为空时,它们应该返回false。
我已经在其他形式中成功地使用了这种方法
我在这里做错了什么?bool TranslationName valid=Html.ViewData.ModelState.isvalidfeldhtml.IdForm=>m.TranslationName.ToString;的目的是什么;?我在这里使用@translationNameValid?null:如果字段无效,则说明打印类的错误。我正在使用引导。