Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ASP net 4从ajax发送对象nullexceptionReference_Jquery_Asp.net_Ajax_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Jquery ASP net 4从ajax发送对象nullexceptionReference

Jquery ASP net 4从ajax发送对象nullexceptionReference,jquery,asp.net,ajax,asp.net-mvc,asp.net-mvc-4,Jquery,Asp.net,Ajax,Asp.net Mvc,Asp.net Mvc 4,我尝试将一个对象从表单发送到一个HttpPost方法(该方法接收一个对象参数),但是我总是得到一个NullExceptionReference,但是如果我作为字符串传递,我不会得到错误。 我的控制器: [HttpPost] //public ActionResult CheckVat(string vatnumber) { public ActionResult CheckVat(VatSearch vatnumber) { return Json(vat

我尝试将一个对象从表单发送到一个HttpPost方法(该方法接收一个对象参数),但是我总是得到一个NullExceptionReference,但是如果我作为字符串传递,我不会得到错误。 我的控制器:

[HttpPost]
    //public ActionResult CheckVat(string vatnumber) {
    public ActionResult CheckVat(VatSearch vatnumber)
    {
        return Json(vatnumber);
    }
我的ajax功能:

<h3>Insert VAT number to check:</h3>
@model LatourretrVat.Models.VatSearch

<form id="form">
    <div class="row">
        <div class="col-sm-6">
            <div class="form-group">
                @Html.TextBoxFor(m => m.VatNumber,new { @class = "form-control", @id="VatNumber"})
                 @Html.ValidationMessageFor(model => model.VatNumber, "", new { @class = "text-danger" })
             </div>
        </div>
        <div class="col-sm-6">
             <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Check VAT" />
            </div>
        </div>
   </div>
</form>
<script >
    $(document).ready(function () {
        $('#form').submit(function () {
            var VatSearch = new Object();
            VatSearch.VatNumber = $("#VatNumber").val();
            $.ajax({
                url: '@Url.Action("CheckVat", "Home")',
                type: "POST",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                //data: JSON.stringify({
                //    VatNumber: $('#VatNumber').val(),
                //}),
                data: JSON.stringify(VatSearch),
                success: function (result) {
                    alert("success");
                },
                error: function (result) {
                    console.log(result);
                    alert("error");
                }
            });
          return false;
        });
    });
</script>
插入要检查的增值税编号:
@模型LatourretrVat.Models.VatSearch
@TextBoxFor(m=>m.VatNumber,新的{@class=“form control”,@id=“VatNumber”})
@Html.ValidationMessageFor(model=>model.VatNumber,“,new{@class=“text danger”})
$(文档).ready(函数(){
$('#表单')。提交(函数(){
var VatSearch=新对象();
VatSearch.VatNumber=$(“#VatNumber”).val();
$.ajax({
url:'@url.Action(“CheckVat”,“Home”),
类型:“POST”,
数据类型:“json”,
contentType:“应用程序/json;字符集=utf-8”,
//数据:JSON.stringify({
//VatNumber:$('#VatNumber').val(),
//}),
数据:JSON.stringify(VatSearch),
成功:功能(结果){
警惕(“成功”);
},
错误:函数(结果){
控制台日志(结果);
警报(“错误”);
}
});
返回false;
});
});

您的HttpPost操作方法参数的名称不应与参数类型的属性之一相同

目前,您的用户
vatnumber
作为参数类型,我假设您的视图模型也有一个名为
vatnumber
的属性

这应该行得通

[HttpPost]
public ActionResult CheckVat(VatSearch data)
{
   return Json(data);
}

此外,当您从服务器显式发送json响应时,无需将
数据类型指定为
“json”

如果您希望在控制器中接收和对象,则可以发送如下json对象:

    $('#form').submit(function () {
        var VatSearch = { "VatNumber" : $("#VatNumber").val() };
        $.ajax({
            url: '@Url.Action("CheckVat", "Home")',
            type: "POST",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(VatSearch),
            success: function (result) {
                alert("success");
            },
            error: function (result) {
                console.log(result);
                alert("error");
            }
        });
      return false;
    });

您是否尝试过将表单序列化<代码>数据:$(“#form”).serialize(),
查看相关url我已经尝试了这些建议,但仍然无法工作,您能让我们查看您的html代码吗?我用html更新帖子