jquery ajax发布数据在控制器端始终为空

sum*_*ore 2 ajax model-view-controller jquery

我一直在尝试制作 Ajax 帖子,但数据在控制器端总是为空。请帮助:-

**Model:-**
public class UpdateProxyTracker
    {    
        public string Test_Reference_Id { get; set; }
        public string Owner { get; set; }
        public string Remarks { get; set; }        
        public string Status { get; set; }        
    }

**View:** 
@using (Html.BeginForm("UpdateTracker", "Home", FormMethod.Post, new { id = "optionForm" }))
{ 
<div>
        <fieldset style="background-color: #FFFFFF">
            <legend>Update Details</legend>
            <table>
                <tr>
                    <td>Test Ref Id</td>
                    <td>
                        <input id="testrefId" readonly="readonly" type="text" value=@Model.Test_Reference_Id>
                    </td>
                </tr>
......
...
}

**JQuery:**
$(document).ready(function () {
    $("#SaveT").click(function () {

        var status = $("#statusddl").val();
        var owner = $("#owner").val();
        var remark = $("#remark").val();
        var test_Reference_Id = $("#testrefId").val();

        var data =
        {
            'Test_Reference_Id': test_Reference_Id,
            'Owner': owner,
            'Remarks': remark,
            'Status': status
        };

        $.ajax({
            url: '@Url.Action("UpdateTracker", "Home")',            
            type: "POST",
            contentType: 'application/json',
            dataType: 'json',
            data: data,            
            success: function (msg) {                           
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(errorThrown);                
            }
        });

    });
});


**Controller:**
public ActionResult UpdateTracker(UpdateProxyTracker data)
        {
                SepHomeService svc = new SepHomeService();
                bool isValid = svc.UpdateData(data);
                var result = svc.GetData();
                return View("Dataview", result);
        }
Run Code Online (Sandbox Code Playgroud)

路由 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );

问题 这里的数据始终为 Null。我尝试将数据作为 JSON.stringify(data) 传递但没有帮助 我们是否需要添加 @Html.begin 表单标签来进行 ajax 调用 这里的数据在 ajax 调用之前被填充但没有传递给控制器​​ 我们是否需要将 Route 更新为进行适当的 Ajax 调用?请建议

Ela*_*yan 6

试试这个,它对我有用

不要使用

contentType: 'application/json',
dataType: 'json',
Run Code Online (Sandbox Code Playgroud)

如果方法不是 JsonResult,这些东西只适合 JsonResult不是ActionResult

使用以下方法。

$.ajax({
            type: "POST",
            data: {data:data},
            url: '../{ControllerName}/{MethodName}',                                                        
            success: function (response) {                           
            },
            error: function (response) {
                alert(errorThrown);                
            }
      });
Run Code Online (Sandbox Code Playgroud)