Ajax调用MVC操作方法-没有为此对象定义无参数构造函数

本文关键字:对象 定义 构造函数 参数 MVC 调用 操作方法 Ajax | 更新日期: 2023-09-27 18:29:03

我正在对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}

所以看起来我需要的实际数据没有被传递,但是数据字符串本身似乎格式良好。错误的原因是什么?

Ajax调用MVC操作方法-没有为此对象定义无参数构造函数

该错误意味着MVC正在尝试实例化控制器,但无法执行。在C#中,如果声明构造函数而不指定可访问性修饰符,则它将是private。您应该将public修饰符添加到AppDetailsController的构造函数中。

Javascript示例

appDetailsView.model = {
         Id: $.trim(idExample),
         AppName: $.trim(appNameExample),
         Guid: 21
      };

Ajax

$.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; }
}