簡體   English   中英

ajax在mvc3控制器方法中發布數據null

[英]ajax post data null in mvc3 controller method

我的一個jquery ajax帖子將post數據發送到我的.NET MVC3控制器方法,但是在控制器方法中,數據顯示為null。 我有很多其他的ajax帖子幾乎使用相同的方法體,它們都工作正常,所以我不確定發生了什么。

Ajax帖子:

$.ajax({
    url: '/Entity/Relate',
    type: 'POST',
    dataType: 'json',
    contentType: 'applicaiton/json; charset=utf-8',
    data: { primaryEntityId: parseInt(entityParentId, 10), relatedEntityId: _createdId },
    success: function (data)
    {
        //do stuff
    },
    error: function ()
    {
        // throw error
    },
    complete: function ()
    {
        //do more stuff
    }
});

控制器方法:

[HttpPost]
public int Relate(int primaryEntityId, int relatedEntityId)
{
    return relationshipRepository.Add(primaryEntityId, relatedEntityId);
}

問題是當我打破Relate方法時,primaryEntityId和relatedEntityId為null,即使在Firebug中的post數據中,它也顯示已將{primaryEntityId:13,relatedEntityId:486}發布到該方法。

關於為什么帖子看起來不錯,但控制器沒有拿起數據的任何建議或想法?

但在控制器方法中,數據顯示為null

這是不可能的,因為Int32是一個值類型,.NET中的值類型不能為null 您可能意味着它們被分配了默認值。 無論如何。

該問題與您在AJAX請求中設置的contentType參數有關。 您需要刪除它,因為您不是發送JSON而是發送標准application/x-www-form-urlencoded請求:

$.ajax({
    url: '/Entity/Relate',
    type: 'POST',
    dataType: 'json',
    data: { 
        primaryEntityId: parseInt(entityParentId, 10), 
        relatedEntityId: _createdId 
    },
    success: function (data)
    {
        //do stuff
    },
    error: function ()
    {
        // throw error
    },
    complete: function ()
    {
        //do more stuff
    }
});

如果要發送JSON請求,請定義視圖模型:

public class RelateViewModel
{
    public int PrimaryEntityId { get; set; }
    public int RelatedEntityId { get; set; }
}

然后讓你的控制器將此視圖模型作為參數:

[HttpPost]
public int Relate(RelateViewModel model)
{
    return relationshipRepository.Add(model.PrimaryEntityId, model.RelatedEntityId);
}

最后發送一個真正的JSON請求(使用JSON.stringify方法):

$.ajax({
    url: '/Entity/Relate',
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json;charset=utf-8',
    data: JSON.stringify({ 
        primaryEntityId: parseInt(entityParentId, 10), 
        relatedEntityId: _createdId 
    }),
    success: function (data)
    {
        //do stuff
    },
    error: function ()
    {
        // throw error
    },
    complete: function ()
    {
        //do more stuff
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM