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}
所以看起来我需要的实际数据没有被传递,但是数据字符串本身似乎格式良好。错误的原因是什么?
该错误意味着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; }
}