在Html.BeginForm中的httppost之前的mvc 4 razor自定义客户端验证

时间:2013-10-16 22:00:18

标签: asp.net-mvc-4 client-side

我在视图中使用ajax.beginform。

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post))
{
    <table>
        <tr>
            <td>
                <input type="text" id="txtCardNumber">
            </td>
            <td>
                <button id="Search"/>
            </td>
        </tr>
    </table>
}

在搜索按钮上单击而不是直接转到HTTPPost上的控制器我想首先对卡号进行一些客户端验证,如检查是否有数字和其他自定义验证。如果任何验证失败,我不想去服务器端。 所以我试着做返回假,但它挂了很长时间而不是瞬间。我尝试了event.preventdefault,但我无法撤消它并转到服务器端,并使用正确的值传递模型值。

$("#Search").button({.live("click", function (event) {
    var isvalid = SubmitValidations();
    if (isvalid) {        
 //show progress bar
        return true;
    } else {
        event.preventDefault(); 
        alert("Please correct the errors on the screen before proceeding.");
        return false;
    }
}); 

如果客户端验证成功,如何进行自定义客户端验证并转到服务器端。

2 个答案:

答案 0 :(得分:0)

live已被弃用。你的第一行应该是

$('#Search').on('click', function(event) {

也尝试从代码中删除返回。

答案 1 :(得分:0)

我更改了辅助方法,以指定我可以使用jQuery挂钩的ID:

@using (@Html.BeginForm("ActionName","ControllerName",FormMethod.Post, new {id = "submitForm"}))
    {
     //...
    }

然后是jQuery:

       $('#submitForm').submit(function () {
            return validateFields(self);//false stops POST, true continues POST
        });