在没有模型的情况下验证文本框

问题描述:

我有一个带有文本框和提交按钮的表单,当用户向文本框添加一个值并提交时,它将更新正在用于存储一些简单配置的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验证,并且可以在稍后添加到无疑具有更多文本时可以在此页面上更新的框。

+0

为什么你不只是使用视图模型? - (强类型绑定,客户端和服务器端验证开箱即用,代码少) –

+0

@StephenMuecke我已经重构了现在要做到这一点,不知道为什么我要避免它,但我会将下面的标记标记为答案因为它做了我最初想要的东西 – JsonStatham

jQuery标准验证库允许您仅使用属性来修饰输入,并在提交表单时自动进行验证。

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

所以,这样的事情会的工作:

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

如果你需要知道的所有验证属性,看看到jQuery验证插件的主页。

说实话,还有其他的选择,例如,您可以创建一个自定义模型联编程序并覆盖验证提供程序。但我认为这会是这样的重新发明轮子...太多精力......

编辑:

让我分享有关自定义验证这个好贴:

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

+0

这确实验证了文本框,但是当我单击提交时,它将呈现为一个工具提示,无论如何,使其看起来像我的验证的其余部分,这只是提交时的标准红色文本。 – JsonStatham

+0

是的,而且很简单。我的建议是检查这些控件的HTML(使用您的验证)并检查您需要设置/填充的属性。 – gustavodidomenico

+0

文本框呈现如下形式: JsonStatham