C# 如何在MVC4中创建自定义验证?
我意识到在MVC4中使用验证属性来执行此任务。但我知道我正在处理一个不同的情况 这是一个模型,其中我有一个集合属性C# 如何在MVC4中创建自定义验证?,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我意识到在MVC4中使用验证属性来执行此任务。但我知道我正在处理一个不同的情况 这是一个模型,其中我有一个集合属性Choices(它始终有5个元素)和corectoice,其中是集合中选定的索引 public class MultipleChoiceQuestionTemplate : QuestionTemplate { public MultipleChoiceQuestionTemplate() { ... } [DisplayName("Question")]
Choices
(它始终有5个元素)和corectoice
,其中是集合中选定的索引
public class MultipleChoiceQuestionTemplate : QuestionTemplate
{
public MultipleChoiceQuestionTemplate() { ... }
[DisplayName("Question")]
public string QuestionText { get; set; }
public List<string> Choices { get; set; }
[DisplayName("Correct Choice")]
public int CorrectChoice { get; set; }
}
公共类MultipleChiceQuestionTemplate:QuestionTemplate
{
公共多回音问题模板(){…}
[显示名称(“问题”)]
公共字符串QuestionText{get;set;}
公共列表选项{get;set;}
[显示名称(“正确选择”)]
公共选择{get;set;}
}
这是视图,请观看演示
<div id="choices">
@for (int i = 0; i < Model.Choices5.Count; i++) {
<div class="choice-container" style="display: block;">
@Html.TextBoxFor(model => model.Choices5[i])
@Html.RadioButtonFor(model => model.CorrectChoice, i)
</div>
}
</div>
@对于(int i=0;imodel.Choices5[i])
@RadioButton(model=>model.CorrectChoice,i)
}
请注意,用户可以在输入中保留空字符串(type=“text”)。我需要验证所选索引(单选按钮)是否应该有字符串
在提交到表单之前,我如何验证它?您必须实现界面IValidatableObject检查本文中的内容,可以看到一个示例因为您希望在客户端实现此功能,您需要IClientValidateable用于自定义逻辑或编写自己的手动验证,而不是IvalidateableObject,它只是服务器端。然而,首先要尝试的是Darin的答案,它可能会让你很简单地通过正确地放置验证错误而逃脱 如果这不起作用,至少需要知道的另一个选项是IClientValidate 如果Darin在第一个链接中的解决方案由于某种原因不起作用,我相信它应该起作用),那么实际上,您可以通过多种方式简单地离开这里