jQuery代碼:傳遞多個JSON對象MVC3操作方法
//This passes NULL for "CategoryID", "CategoryName", "ProductID", "ProductName" $("#btnPost").click(function() { var CategoryModel = { CategoryID: 1, CategoryName: "Beverage" }; var ProductModel = { ProductID: 1, ProductName: "Chai" }; var data1 = {}; data1["cat"] = CategoryModel; data1["prd"] = ProductModel; var jsonData = JSON.stringify(data1); $.ajax({ url: url + '/Complex/ModelTwo', //This works but property values are null type: 'post', dataType: 'json', data: { "cat": CategoryModel, "prd": ProductModel }, //jsonData, cache: false, success: function (result) { alert(result); }, error: function (xhr, ajaxOptions, thrownError) { alert(thrownError); } }); });
MVC代碼(C#):
public class ComplexController : Controller
{
public string ModelOne(Category cat)
{
return "this took single model...";
}
public string ModelTwo(Category cat, Product prd)
{
return "this took multiple model...";
}
}
public class Category
{
public int CategoryID { get; set; }
public string CategoryName { get; set; }
}
public class Product
{
public int ProductID { get; set; }
public string ProductName { get; set; }
}
現在的問題是,我無法得到它通過傳遞工作「CategoryMode 「,」ProductModel「轉換爲」ModelTwo「動作方法。 JQuery post正確地標識了動作方法「ModelTwo」,但「cat」,「prd」屬性值爲null。 「類別ID」,「類別名稱」,「產品ID」,「產品名稱」均爲空,儘管碰到該方法。
//THIS ONE WORKS FINE... $("#btnPost").click(function() { var CategoryModel = { CategoryID: 1, CategoryName: "Beverage" }; var ProductModel = { ProductID: 1, ProductName: "Chai" }; var data1 = {}; data1["cat"] = CategoryModel; data1["prd"] = ProductModel; var jsonData = JSON.stringify(data1); $.ajax({ url: url + '/Complex/ModelOne', //This works type: 'post', dataType: 'json', data: CategoryModel, cache: false, success: function (result) { alert(result); }, error: function (xhr, ajaxOptions, thrownError) { alert(thrownError); } }); });
那麼,我的第一個JQuery調用「ModelTwo」動作方法有什麼問題?
我花了很多時間搞清楚這一點,但不知道發生了什麼事。這裏沒有路由問題,因爲我可以登陸正確的行動方法...
任何幫助將不勝感激。
謝謝!
這太棒了!!!!!!有效。沒有單個參數版本的「ContentType」設置,它工作得很好,但是雙倍。我必須做的唯一改變是使數據的字符串化像你提到的那樣傳遞,而不是整個模型本身「JSON.stringify({cat:CategoryModel,prd:ProductModel})」幫助了很多。你讓我的一天達林!非常感謝! – 2012-03-04 22:30:37
我知道它有一個包裝類,它具有Category和Product類的「get set」。對於單參數版本它工作得很好,但是當我傳遞兩個參數時。但無論如何,你的建議幫助,我不得不添加contentType爲兩個參數化操作方法的json。謝謝! – 2012-03-04 22:36:46
這工作在Firefox?它在IE瀏覽器工作得很好,但Firefox。它沒有在動作控制器中着陸,當我使用Fiddler找出數據傳遞給控制器時,只是空白。順便說一下,我的控制器操作方法駐留在不同的項目中,所以它跨域發佈。只要action方法只有一個參數,但只有兩個參數,它就可以工作。將數據傳遞給控制器跨域時出錯。 – 2012-03-05 20:36:44