簡體   English   中英

Ajax調用MVC操作方法-沒有為此對象定義無參數構造函數

[英]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.

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