我有asp.net MVC3应用程序,通过在模型中添加验证属性来完成验证。 e.g。
[Required(ErrorMessage = "Required field")]
[Display(Name = "SurveyName")]
[DataType(DataType.Text)]
public string SurveyName {get;set;}
然后我在视图中创建文本框
@Html.TextBoxFor(model => model.SurveyQuestions[i].SurveyName)
并添加验证消息
@Html.ValidationMessageFor(model => model.SurveyQuestions[i].SurveyName)
这里的场景是我用for循环创建了5个带有相同模型属性Surveyname的文本框,我想只验证第一个文本框而不验证文本框的其余部分。
这可能吗?
修改
我在下面的代码中使用了其他文本框,但它也会在这些字段上进行验证。
@Html.TextBox("SurveyQuestions[" + i + "].Question", @Model.SurveyQuestions[i].Question)
答案 0 :(得分:2)
所以最后我得到了解决方案,但我认为这不是正确的方法。但它解决了我的问题。 我采取措施解决问题 -
我的最终代码看起来像
@if (i == 0)
{
@Html.TextBoxFor(model => model.SurveyQuestions[i].Question, new Dictionary<string, object> { { "data-val-required", "required" }, { "data-val", "true" }, { "title", "Question " + (i + 1) }, {"class","QuestionTextBox"} })
<br />
@Html.ValidationMessage("SurveyQuestions[0].Question", "At least one question is required.")
}
else
{
@Html.TextBoxFor(model => model.SurveyQuestions[i].Question, new { @class = "QuestionTextBox", @title = "Question " + (i + 1) })
}
答案 1 :(得分:1)
您需要使用以下代码创建第一个代码:
@Html.TextBoxFor(model => model.SurveyQuestions[i].SurveyName)
然后,对其余部分使用@Html.TextBox
。您只需要对模型属性的id和name属性进行硬编码。