【问题标题】:How to create a custom validation in MVC4?如何在 MVC4 中创建自定义验证?
【发布时间】:2013-03-02 00:44:13
【问题描述】:

我意识到在 MVC4 中使用验证属性来执行此任务。但要知道我正在处理不同的情况。

这是模型,其中我有一个集合属性 Choices(这一直有 5 个元素)和 CorectChoice 从集合中选择的索引在哪里。

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; }
}

这是视图,观看演示。

    <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>

请注意,用户可以在输入中留下空字符串(type="text")。我需要验证选定的索引(单选按钮)应该有一个字符串。

如何在提交表单之前对其进行验证?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    由于您希望在客户端使用此功能,因此您需要 IClientValidateable 用于自定义逻辑或编写您自己的手动验证,而不是 IvalidateableObject,它只是服务器端。但是 - 首先要尝试的是 Darin 的回答,只要正确放置验证错误,它可能会让你很轻松。

    MVC Radio Button Lists are not grouped when using the HtmlHelper class

    如果这不起作用,另一个至少要知道的选项是 IClientValidateable ASP.NET MVC implement custom validator use IClientValidatable

    如果 Darin 在第一个链接中的解决方案由于某种原因不起作用,我相信它应该)你实际上可以通过多种方式相当简单地离开这里

    1. 只需截取表单发布并查询单选按钮并确保选中一个。由于理论上您可以拥有多种单选按钮类型,因此您可以使用选择器来确保它是表单的一部分或包含类类型。如果 Darin 的解决方案不起作用,请告诉我,如果您需要帮助,我会提供解决方案。

    2. 对单选按钮使用不显眼的验证。虽然只有列表中的第一个会得到错误。您必须使用 css 类解决一些小问题,但解决方案在这里: ASP.NET MVC 3 unobtrusive validation and radio buttons

    【讨论】:

      【解决方案2】:

      你必须实现接口IValidatableObject查看这篇文章可以看到一个例子http://msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvccustomvalidation_topic4

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多