Asp.net MVC3验证

时间:2011-10-01 06:58:46

标签: asp.net-mvc asp.net-mvc-3 validation

我有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)

2 个答案:

答案 0 :(得分:2)

所以最后我得到了解决方案,但我认为这不是正确的方法。但它解决了我的问题。 我采取措施解决问题 -

  1. 我观察了Html的输入字段,其中存在验证错误。输入字段将具有其他属性,例如“data-val-required”和“data-val”
  2. 然后我将这些字段添加到需要验证的文本框中。
  3. 然后我为带有验证信息的文本框添加了Html.Validation()。
  4. 我的最终代码看起来像

                 @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属性进行硬编码。