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:如果字段无效,则说明打印类的错误。我正在使用引导。