Jquery 所需的字段验证不适用于按钮单击Ajax调用

Jquery 所需的字段验证不适用于按钮单击Ajax调用,jquery,ajax,asp.net-mvc,razor,Jquery,Ajax,Asp.net Mvc,Razor,我有一个按钮,在它点击时,我执行一个对控制器的Ajax调用,但所需的字段验证不适用于该调用 以下是我的型号代码: [Required(ErrorMessage = "*")] public string Customer { get; set; } [Required(ErrorMessage = "*")] public string Phone { get; set; } [Required(ErrorMessage = "*")] public string Address { get

我有一个按钮,在它点击时,我执行一个对控制器的Ajax调用,但所需的字段验证不适用于该调用

以下是我的型号代码:

[Required(ErrorMessage = "*")]
public string Customer { get; set; }

[Required(ErrorMessage = "*")]
public string Phone { get; set; }

[Required(ErrorMessage = "*")]
public string Address { get; set; }
下面是我的视图代码:

@Html.TextBoxFor(m => m.Orders.Customer, new { @placeholder = "Enter Your Full Name" })
@Html.ValidationMessageFor(m => m.Orders.Customer)
@Html.TextBoxFor(m => m.Orders.Phone, new { @placeholder = "Enter Your Cell Number" })
@Html.ValidationMessageFor(m => m.Orders.Phone)
@Html.TextAreaFor(m => m.Orders.Address, new { @rows = 3, @cols = 2, @style = "width:300px;", @placeholder = "Enter Your  Complete Delivery Address" })
@Html.ValidationMessageFor(m => m.Orders.Address)
<input id="btnsubmit" type="button"  value="Submit" />

我应该怎么做才能使验证生效?

请确保分析表单,以便对其进行验证

$.validator.unobtrusive.parse("#myForm");

$("#myForm").submit(function () {
    var $form = $(this);
    var isValid = $form.validate().valid();

    if (isValid === true) {
        var data = $('#myForm').serialize() + '&' + $.param({ 'products': ids }, true);
        var url = '@Url.Action("GetIds", "Store")';

        $.post(url, data, function (r) {
            alert("Order Submitted Successfully");
        });
    }
});

确保解析表单,以便对其进行验证

$.validator.unobtrusive.parse("#myForm");

$("#myForm").submit(function () {
    var $form = $(this);
    var isValid = $form.validate().valid();

    if (isValid === true) {
        var data = $('#myForm').serialize() + '&' + $.param({ 'products': ids }, true);
        var url = '@Url.Action("GetIds", "Store")';

        $.post(url, data, function (r) {
            alert("Order Submitted Successfully");
        });
    }
});

默认情况下,客户端验证处于关闭状态。请确保通过web.config启用它:

<configuration>
<appSettings>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
</configuration>


UnobtrusiveJavaScriptEnabled也应该打开。

客户端验证默认为关闭。请确保通过web.config启用它:

<configuration>
<appSettings>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
</configuration>


UnobtrusiveJavaScriptEnabled也应该打开。

将按钮更改为
type=“submit”
,然后处理
$('form')。submit()
函数而不是按钮
。单击()。然后,您可以使用
$(this).valid()
检查表单是否有效,是否继续ajax调用(将显示验证消息并使用preventDefault停止提交:
$('#formID')。on(“提交”,函数(e){e.preventDefault();…
或add
return false;
作为脚本的最后一行重定向是什么意思。如果要重定向,请不要使用ajax(它只是毫无意义的),在POST方法中执行一个普通的表单提交和重定向,这很难让人相信。但请尝试location.replace(“/Store/Index”)-另外,如果您计划重定向,我同意不使用Ajax。将按钮更改为
type=“submit”
,然后处理
$('form')。submit()
函数而不是按钮
。单击()
事件。然后您可以使用
$(this).valid()
检查表单是否有效,并且不继续Ajax调用(将显示验证消息,并使用preventDefault停止提交:
$(“#formID”)。在(“提交”上,函数(e){e.preventDefault();…
或添加
返回false;
作为脚本的最后一行重定向是什么意思。如果要重定向,请不要使用ajax(它只是毫无意义)在POST方法中执行一个普通的表单提交和重定向,这很难让人相信。但是尝试location.replace(“/Store/Index”)-另外,如果你打算重定向,我同意不使用Ajax。validator.unobtrusive.parse(“#myForm”);
是没有意义的(表单已经被解析过),它应该是
var isValid=$form.valid()
并且您需要
返回false;
在最后防止默认提交
$。验证器。不引人注目。parse(#myForm”)
是无意义的(表单已经被解析),它应该是
var isValid=$form.valid();
并且您需要
在最后返回false;
来防止默认提交