在发送到控制器之前,使用javascript解析方法中文本框中的所有值

在发送到控制器之前,使用javascript解析方法中文本框中的所有值,javascript,asp.net-mvc,string,textbox,Javascript,Asp.net Mvc,String,Textbox,我这里有一个静态方法: public static string ParseStringForSpecialChars(string stringToParse) { const string regexItem = "[^a-zA-Z0-9 ]"; string stringToReturn = Regex.Replace(stringToParse, regexItem, @"\$%&'"); return stringToReturn; } 这个方法工

我这里有一个静态方法:

public static string ParseStringForSpecialChars(string stringToParse)
{
    const string regexItem = "[^a-zA-Z0-9 ]";

    string stringToReturn = Regex.Replace(stringToParse, regexItem, @"\$%&'");

    return stringToReturn;
}
这个方法工作得很好,因为它阻止了许多字符串对我的应用程序有害。我想有更好的方法做事情,但这不是我文章的重点

现在我想要的是从javascript中的任何文本框中获取所有值,该javascript将调用此方法,然后将数据发送到控制器

说我有这样的观点:

@using MyApp.Utilities
@model List<MyApp.Models.CustomerObj>

@{
    ViewBag.Title = "Customer Index";
}

<h2>Customer Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
    @using (Html.BeginForm())
    {
        <p>
            Name: @Html.TextBox("customerName") <br/>
            Address: @Html.TextBox("customerAddress") City: @Html.TextBox("customerCity") <br/>
             <br />
            Postal Code: @Html.TextBox("customerPC")<br/>
            Phone Number: @Html.TextBox("customerPhone") Fax Number: @Html.TextBox("customerFax")<br />
            Mail: @Html.TextBox("customerEmail")  <br/>
            <input type="submit" value="Filter" style="float:right">
        </p>
    }
</p>
@使用MyApp.Utilities
@模型列表
@{
ViewBag.Title=“客户索引”;
}
客户索引

@ActionLink(“新建”、“创建”)
@使用(Html.BeginForm())
{

名称:@Html.TextBox(“客户名称”)
地址:@Html.TextBox(“customerAddress”)城市:@Html.TextBox(“customerCity”)

邮政编码:@Html.TextBox(“customerPC”)
电话号码:@Html.TextBox(“customerPhone”)传真号码:@Html.TextBox(“customerFax”)
邮件:@Html.TextBox(“customerEmail”)

}

我怎样才能继续做我想做的事?有人能给我建议如何进行吗?我希望有一个灵活的解决办法,因为你现在的观点将发生变化,我需要这个方法适用于任何地方


谢谢。

您是否考虑过向模型中添加如下数据注释:

[RegularExpression(@"^\$?\d+(\.(\d{2}))?$")]
这是从以下方面捕获的:


当然,这样做的缺点是,您必须将其添加到模型中要应用它的所有属性中。您可以使用远程验证并通过javascript启动它。否则,您将不得不在客户端执行此操作。(但这并不是很难做到。)

要么你做一个客户端验证,它相当于你的静态方法(js正则表达式),要么把这个方法作为一个自定义验证器,并将其作为字符串属性的数据注释。所以如果我理解得很好,我可以使用数据注释来避免人们键入特殊字符,例如?因为我添加的另一种方法是在使用前在控制器中获取每个值时解析它们,但我发现这可能会变得很麻烦,因为我需要在任何地方都这样做,因此我认为可能有更好的方法来做,因此我越读你的第二个提案,我越是感兴趣,我就越想知道怎么做。我又看了一遍你的卫生代码,我觉得可以通过正则表达式来完成。看看@scott pascoe的答案,它可能会做到,“可能”,因为我不是正则表达式专家。它不显示正则表达式验证,但显示如何通过数据注释进行验证。如果您的逻辑非常复杂,无法使用现有的验证属性进行验证,则可以使用自定义验证程序。