【问题标题】:ASP.NET MVC RC2 - Why can't I use the normal validation options? e.g. RequiredFieldValidatorASP.NET MVC RC2 - 为什么我不能使用正常的验证选项?例如必填字段验证器
【发布时间】:2009-03-16 15:42:07
【问题描述】:

我正在尝试验证基本表单,我可以不使用标准验证控件吗?我正在寻找的每个地方似乎都在尝试使用类似下面的东西

<%= Html.ValidationSummary() %>

<% using (Html.BeginForm()) {%>

    <fieldset class="fields">
        <legend>Create New Contact</legend>
        <p>
            <label for="task">Task Name:</label>
            <%= Html.TextBox("task") %>
            <%= Html.ValidationMessage("task", "*") %>
        </p>
        <p class="submit">
            <input type="submit" value="Create" />
        </p>
    </fieldset>

<% } %>

我认为 id 可以使用标准组件吗?任何指针都会很棒!

【问题讨论】:

    标签: asp.net-mvc validation


    【解决方案1】:

    ASP.NET MVC 使用与常规 ASP.NET 完全不同的理念;因此,除了少数例外,几乎没有 ASP.NET 控件(等)可以在 ASP.NET MVC 中工作。除此之外,页面生命周期中他们通常根本不存在做某事的那个点。

    有一些方法可以做到这一点,例如jQuery validation plug-in,或者使用IDataErrorInfo等。

    请注意,如果您在客户端进行验证,您仍必须(单独)在服务器上进行验证。那些讨厌的浏览器不能被信任;-p

    【讨论】:

    • 我很高兴它现在只是服务器端,但那是 Html.ValidationMessage 选项,这不是 MVC 对标准组件的回答吗?
    • 恐怕我不知道。我知道 Scott Gu 在他的博客上提到了一些内置的验证内容:weblogs.asp.net/scottgu/archive/2009/01/27/…
    【解决方案2】:

    ASP.NET MVC 取消了大多数经典的 ASP.NET 控件,因为该框架不支持将这些控件注入到您的页面中以使其正常工作的许多疯狂的东西。 viewstate 和晦涩难懂的 javascript 函数之类的东西随处可见。

    【讨论】:

      【解决方案3】:

      您所说的验证器属于 webforms 和 webcontrols 领域。在 ASP.NET MVC 中,您在视图中所做的一切就是生成纯 HTML。 Valdiators 本质上是标签 web 控件,需要不再可用的视图状态。

      【讨论】:

        【解决方案4】:

        ASP.NET 验证器不再工作,但已经完成了一些工作来简化任务。例如,我使用了 xVal,它完成了一项体面的任务,甚至与 JQuery 验证集成,但我建议您在使用类似的东西之前了解验证的工作原理。

        简单地说,ViewData 中有一个错误集合,它包含两个集合,一个引用每个表单字段,另一个是与它们相关的错误列表。这是在绑定时或手动填充的,如果有一些错误,它们可以显示在摘要中或字段旁边(为此目的使用 html 帮助器)。

        框架自动填充集合并可以将验证规则转换为客户端脚本,但本质是学习验证在 MVC 中的工作原理。

        【讨论】:

          【解决方案5】:

          没有我知道的组件。您将不得不像这样自己进行验证(或使用updatemodel 等)

              if (String.IsNullOrEmpty(username))
              {
                  ModelState.AddModelError("username", "You must specify a username.");
              }
          

          然后返回到您的编辑表单,Modelstate 错误将出现在验证摘要中。

          那里有验证框架like xval,不确定这是否是您正在寻找的?

          【讨论】:

            猜你喜欢
            • 2011-11-24
            • 1970-01-01
            • 1970-01-01
            • 2020-02-27
            • 1970-01-01
            • 2023-03-30
            • 1970-01-01
            • 2013-04-18
            相关资源
            最近更新 更多