我只是想將一個簡單的對象傳遞給一個MVC控制器方法,而不必爲它創建一個視圖模型。控制器方法中的參數始終爲空,儘管它已被調用。我的jquery文章如下。用jquery發佈簡單的json到MVC動作控制器方法
$(function() {
$("button[id$='addidentifier']").click(function (evt) {
alert('button click');
evt.preventDefault();
var postdata = {
identifier: $('#Identifier').val(),
goldkey: $('#Goldkey').val()
};
$.ajax({
type: 'POST',
url: 'altbloomberg/AddIdentifier',
data: JSON.stringify({ postdata : postdata }) ,
success: function(data) {
alert('data: ' + data);
},
failure: function(a,b,c) {
alert(a);
},
//contentType: "application/json",
dataType: 'json'//,
//processData: false
});
});
控制器方法很簡單,我甚至沒有完成它的主體,因爲我想先獲取數據。
[System.Web.Http.HttpPost]
public ActionResult AddIdentifier(string postdata)
{
// put here to place a breakpoint to look at postdata
string lookhere = "";
}
我已經看了其他崗位,這是他們「似乎」,以指示做。這似乎應該很容易。那麼我在這裏做錯了什麼?
每下面一些建議:我改變jquery的函數來傳遞
$.ajax({
type: 'POST',
url: 'altbloomberg/AddIdentifier',
contentType: "application/json",
dataType: 'json',
data: JSON.stringify(postdata),
success: function(data) {
alert('data: ' + data);
},
failure: function(a,b,c) {
alert(a);
}
});
我只是改變了字符串化方法PARAMS和設置內容類型,則改爲控制器PARAMS到
(string identifier, string goldkey).
這作爲stringify方法的結果是
"{"identifier":"XS0939678792","goldkey":"LAW"}"
那麼爲什麼是它那麼如果我只使用一個PARAM在控制器方法
(String postdata)
,並使用
JSON.Stringify({postdata:postdata})
其結果是
"{"postdata":{"identifier":"XS0939678792","goldkey":"GOVT"}}" does it NOT work.
不應以POSTDATA控制器匹配方法json值?
是否成功輸入了斷點?如果不是,你應該嘗試通過@ Url.Action指定控制器/動作 – Dbl
是的,它進入了中斷點,但postdata總是爲空 – DRobertE
@denas是的,它只會是null。你發送的json數據不是一個簡單的字符串 – SivaRajini