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

时间:2016-01-06 02:32:36

标签: c# jquery asp.net ajax asp.net-mvc

我正在对ASP.NET MVC控制器中的action方法进行以下AJAX调用:

public class AppDetailsController
{
    // GET: AppDetails
    AppDetailsController() { }

    [HttpPost]
    public ActionResult SaveAppDetails(string appDetails)
    {
       ...
    }

但是我收到HTTP 500错误,说明没有为此对象定义的无参数构造函数'。这是我的控制器:

appDetails= {"id":{"type":"string"},"appName":{"type":"string"},"guid":21}

'数据' Ajax调用传递给控制器​​看起来是这样的:

FB.api('/'+id+'/picture?type=large&width=300&height=300', function(response){
    if(response && !response.error){
        // do your stuff.
    }
})

...所以看起来我需要的实际数据没有被传递,但数据字符串本身似乎很好。导致错误的是什么?

2 个答案:

答案 0 :(得分:4)

错误意味着MVC正在尝试实例化控制器但不能这样做。在C#中,如果您声明构造函数并且未指定辅助功能修饰符,则它将为private。您应该将public修饰符添加到AppDetailsController的构造函数。

答案 1 :(得分:1)

Javascript示例

-02:19:10

<强>的Ajax

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)
    {
       ...
    }