我正在对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.
}
})
...所以看起来我需要的实际数据没有被传递,但数据字符串本身似乎很好。导致错误的是什么?
答案 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)
{
...
}