MVC4操作发布参数错误500内部服务器错误
本文关键字:错误 内部 服务器 参数 操作 布参数 MVC4 | 更新日期: 2023-09-27 18:21:10
我有一个带有后期操作(多个参数)的控制器。使用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; }
...
}
我还没有见过像这样声明javascript对象的语法。也许这就是问题所在。尝试:
data: JSON.stringify({
login: { UserId : 0, Username: "myUser", Password: "myPass" },
company: { CompanyId : 0, Name: "myCompany" }
})
删除(
和)
另一个问题可能是由于ValidateAntiForgeryToken
。此过滤器是为了防止CSRF,您必须将请求验证令牌发送到服务器。请先尝试删除此筛选器,看看它是否有效。
像这样尝试
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: ({ UserId : 0, Username: "myUser", Password: "myPass" }),
company: ({ CompanyId : 0, Name: "myCompany" })
}),
async: false,
cache: false,
});
return (xhr.status == 200);
}
用户登录
public class UserLogin
{
public int UserId {get; set;}
public string Username { get; set; }
public string Password { get; set; }
}
公司
public class Company
{
public int CompanyId {get; set;}
public string Name { get; set; }
public string Street { get; set; }
...
}
根据此链接发布参数,这是不可能的。发布时只需将一个对象传递给动作构造函数即可。