【问题标题】:Validating a textbox without a model验证没有模型的文本框
【发布时间】:2015-07-21 13:28:29
【问题描述】:

我有一个带有文本框和提交按钮的表单,当用户向文本框添加值并提交时,它会更新一个用于存储一些简单配置的 XML 文件。

@using (Html.BeginForm("SetThreshold", "Config", FormMethod.Post))
{  
    <p>Current Email Threshold @Html.Raw(threshold)</p>

    @Html.TextBox("emailThreshold", null, new { @class = "numericTextBox" })

    <input type="submit" value="Update" />
}

由于我没有使用模型,因此我无法使用数据注释来确保用户在尝试提交之前输入了数字。

我真的不想渲染一些警告文本,然后在单击提交按钮时根据表单的状态显示/隐藏它。

验证文本框客户端的最整洁和最简单的方法是什么,同时与我在基于模型的视图上使用的所有其他 JQUERY 验证保持一致,并且当我无疑有更多文本框时能够添加到以后可以在此页面上更新。

【问题讨论】:

  • 为什么不只使用视图模型? - (强类型绑定、开箱即用的客户端和服务器端验证以及更少的代码)
  • @StephenMuecke 我现在已经重构来做到这一点,真的不知道我为什么要避免它,我将以下标记为答案,尽管它做了我最初想要的

标签: jquery asp.net-mvc


【解决方案1】:

jQuery 标准验证库允许您只用属性装饰您的输入,并且在提交表单时它们会自动得到验证。

例如,如果您使用required 属性呈现您的文本框,它将起作用。但是,它只会执行client-sidevalidation;在 C# 模型中使用验证属性也可以启用 server-sidevalidations。

所以,这样的事情会起作用:

@Html.TextBox("emailThreshold", null, new { required = "required" })

如果您需要了解所有验证属性,请查看 jquery 验证插件主页。

说实话,还有其他选择,例如,您可以创建自定义模型绑定器并覆盖验证提供程序。但我认为这就像重新发明轮子……太费力了……

编辑:

让我分享这篇与自定义验证相关的好帖子:

http://johnnycode.com/2014/03/27/using-jquery-validate-plugin-html5-data-attribute-rules/

【讨论】:

  • 是的,而且很简单。我的建议是检查这些控件的 HTML(通过您的验证)并检查您需要设置/填充哪些属性。
  • 文本框呈现如下:
  • 并将验证摘要作为 div:
    • 地址 1 为必填项。
    • 地址 2 为必填项。
  • 我怎样才能使这个只需要和数字
猜你喜欢
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多