[英]Ajax calling MVC action method - No parameterless constructor defined for this object
我正在對ASP.NET MVC控制器中的操作方法進行以下AJAX調用:
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: appControllerUrl + "/SaveAppDetails",
data: {appDetails: JSON.stringify(appDetailsView.model)},
processData: true,
dataType: "json"
});
但是我收到一個HTTP 500錯誤,指出“沒有為此對象定義無參數構造函數”。 這是我的控制器:
public class AppDetailsController
{
// GET: AppDetails
AppDetailsController() { }
[HttpPost]
public ActionResult SaveAppDetails(string appDetails)
{
...
}
Ajax調用傳遞給控制器的“數據”看起來像這樣:
appDetails= {"id":{"type":"string"},"appName":{"type":"string"},"guid":21}
...因此看起來好像我沒有傳遞實際所需的數據,但是數據字符串本身似乎格式正確。 是什么導致錯誤?
該錯誤表示MVC試圖實例化控制器,但無法這樣做。 在C#中,如果您聲明一個構造函數而不指定可訪問性修飾符,則它將是private
。 您應該將public
修飾符添加到AppDetailsController
的構造函數中。
Javascript范例
appDetailsView.model = {
Id: $.trim(idExample),
AppName: $.trim(appNameExample),
Guid: 21
};
阿賈克斯
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: appControllerUrl + "/SaveAppDetails",
data: JSON.stringify(appDetailsView.model),
processData: true,
dataType: "json"
});
行動
public class AppDetailsController
{
// GET: AppDetails
public AppDetailsController() { }
[HttpPost]
public ActionResult SaveAppDetails(AppDetailsView appDetails)
{
...
}
類視圖模型
public class AppDetailsView{
public string Id { get; set; }
public string AppName { get; set; }
public int Guid { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.