onBegin函数取消屏蔽表单字段的工作原理,但值仍然使用掩码发送到控制器

时间:2013-01-07 12:55:45

标签: c# asp.net .net asp.net-mvc

我有一个使用Ajax发送的表单。

有一个带掩码的字段,其值如下所示:(此字段以dinamically方式添加)

(011) 1111-1111

我有一个删除掩码的beforeSend回调函数。

我可以在发送表单之前看到该字段:

01111111111

但在我的控制器中,我得到的价值好像我没有移除面具。无法理解为什么!

表格

@using (Ajax.BeginForm("opImportFile", "Operacao", new AjaxOptions { HttpMethod = "POST", OnBegin = "validation", OnSuccess = "LimparCampos", OnFailure = "LimparCampos" }, new { id = "formUpdStoringSettings" }))
{
        <fieldset>
            <legend>Importação - Arquivo</legend>
        <!--    <h2><a href="#" id="AddAbsPath" class="editBtn" onclick="addArmazenamento();" style="font-size:12px; color:#E17009 !important;"> Adicionar</a></h2>            -->
        <table id="tblArmazenamento">            
                <tr id="@element">                           
                    <td>@Html.Hidden("idCaminhoRepositorio_" + element)
                        @Html.TextBox("caminhorepositorio_" + element, "", new { @class = "validate[required] smallField limpar", disabled = "disabled" })
                        @Html.Hidden("caminhoRepositorio_" + element, "", new { @class = "validate[required] smallField limpar"})</td>
                    <td><a href="#" id="editPath" class="editBtn" onclick="FileTree()"> Localizar</a>
                        <a href="#" id="RemAbsPath_@element" class="editBtn" onclick="removeArmazenamento(@element);" style="color:red !important;"> Remover</a>
                    </td>    
                </tr>
            <tr><td colspan="2">@Html.DropDownListFor(m => m.tipo, new SelectList(Model.tipo, "idTipo", "nomeTipo"), "Escolha um Tipo", new { @class = "validate[required] smallField" })</td></tr>             
            <tr><td colspan="2"><br /></td></tr>
        </table><br />
            <input type="submit" value="Importar" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button-link" />                    
        </fieldset>         
}      

回调

function validation() {
    $('.mask').each(function (index) {
        $(this).val($(this).val().replace('(', ''));
        $(this).val($(this).val().replace(')', ''));
        $(this).val($(this).val().replace(/-/g, ''));
        $(this).val($(this).val().replace(/ /g, ''));
        $(this).text($(this).val()); //Here I get an unmaked value
    });
}

控制器

string[] indicesValues = form["group"].Split(','); //Here I am getting a masked value

2 个答案:

答案 0 :(得分:1)

此处发布了类似的问题:

Modify posted input values on onbegin of ajax.beginform

基本上,您在表单上修改的值不是浏览器已经序列化的值。

答案 1 :(得分:0)

您正在选择基于“mask”类来删除蒙版,但我没有看到该类的任何控件。你输错了课吗?我相信你的最后一行javascript也应该是.val而不是.text。