【发布时间】:2013-07-04 05:07:03
【问题描述】:
我有一个带有后期操作(多个参数)的控制器。使用 javascript ajax 发布数据,我得到了一个500 Internal Server Error。有什么建议吗?
路由
config.Routes.MapHttpRoute(
null,
routeTemplate: "api/{controller}/{action}"
);
Ajax
public register(data: any): bool {
var url = this.baseUrl + "Account/Register/";
var xhr: JQueryXHR = $.ajax({
type: "POST",
url: url,
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({
login: ({ Id: 0, "Username": "myUser", "Password": "myPass" }),
company: ({ Id: 0, "Name": "myCompany" })
}),
async: false,
cache: false,
});
return (xhr.status == 200);
}
动作
[HttpPost]
[AllowAnonymous]
[Mvc.ValidateAntiForgeryToken]
public void Register(UserLogin login, Company company)
用户登录
public class UserLogin
{
public string Username { get; set; }
public string Password { get; set; }
}
公司
public class Company
{
public string Name { get; set; }
public string Street { get; set; }
...
}
【问题讨论】:
-
第一个建议是检查调试器以获取比 500 错误更多的信息。其次,我认为您不想将数据作为字符串化 JSON 传递。此答案包含有关使用 XHR 传递 JSON 的更多信息:stackoverflow.com/questions/12446024/…
-
已经尝试不使用 stringify。它应该以这种方式工作......也许与路由配置有关?
-
@Abc:查看我关于
ValidateAntiForgeryToken的更新答案,希望对您有所帮助 -
我会的,谢谢你的提示
标签: c# ajax asp.net-mvc asp.net-mvc-4