搜索整个HTML表单的任何方式?或全局限制字符?

时间:2014-11-12 10:39:39

标签: javascript jquery asp.net-mvc forms

我有一个不能接受非8位字符的数据库,如果用户在整个表单中添加了一个欧元符号,整个事情就会崩溃。

这是一个非常非常大的形式,我并不想在任何地方添加代码行来运行简单的替换功能 - 但我无法在线找到任何方法来搜索整个表格预先提交,这可能吗?

未能确定在我的网络表单中限制某些字符输入的最佳方法是什么?

使用大量jQuery运行ASP.NET MVC。

2 个答案:

答案 0 :(得分:1)

真的没有足够的信息来尽可能地回答这个问题。但我会试一试。你不会在任何地方添加代码行。我假设您在提交之前汇总表单数据,此时您将剥离欧元符号。假设它是一个对象..

var formObj = {firstName : "aspiring€", lastName : "programmer€", comment : "I really like euro symbols!!€€€!!" }

$.each(formObj, function( key, value ) {
  formObj[key] = formObj[key].replace(/€/g, '');
});

console.log(formObj);

答案 1 :(得分:0)

2种可能的选择

一个。您可以创建一个自定义模型绑定器,在绑定模型之前删除无效字符。 Refer this example用于自定义模型绑定器,用于从发布的值中删除空白。优点是您可以在global.asax.cs中注册它,并且您的模型属性在回发后不会包含无效字符。缺点是,如果ModelState无效并且您返回视图,则用户会看到修改后的文本,这可能会令人困惑(我输入的内容发生了什么?

B中。创建一个继承自RegularExpressionAttribute的属性并将其应用于所有相关属性

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class MyAttribute : RegularExpressionAttribute
{
    public MyAttribute() : base(@"^[^\u20AC]+$")
    {
        // Add default error message
        ErrorMessage = "The value cannot contain the euro symbol";
    }
}

并在Global.asax.cs

中注册
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(MyAttribute), typeof(RegularExpressionAttributeAdapter));

优点是它提供了客户端和服务器验证。缺点是您需要记住将其添加到所有属性