我正在使用Angularjs (1.2.20)向Microsoft ASP.Net MVC 4提交一个表单帖子
public ActionResult Save2(FormCollection customer)
{
//TODO: Do some stuffs...
return new HttpStatusCodeResult(HttpStatusCode.OK);
}但是,FormCollection是空的。我知道正在发送数据,因为如果我将其更改为下面的代码(使用强类型的CustomerVm),它将按预期工作。
public ActionResult Save1(CustomerVm customer)
{
//TODO: Do some stuffs...
return new HttpStatusCodeResult(HttpStatusCode.OK);
}我使用FormCollection,以便在数据中添加ASP.Net防伪造令牌(而不是头)。下面是我的自定义javascript代码。此外,还可以找到整个代码(Visual ) 这里
发布于 2014-07-21 05:36:08
您需要用内容类型的application/x-www-form-urlencoded发送请求,并将请求体编码为这样。这是一个很好的开始,但是它以JSON的形式发送数据。
var data = JSON.stringify(customer);
// FormCollection
$http({
method: 'POST',
url: '/Home/Save2',
//dataType: 'json',
contentType: 'application/x-www-form-urlencoded; charset-UTF-8',
//contentType: 'application/json; charset-UTF-8',
data: data
});将对象转换为URL编码形式实际上非常复杂。谢天谢地,Ben已经通过请求转换器创建了一个执行此操作的transformRequestAsFormPost服务。你可以尝试加入他的代码并对你的代码进行修改.
myApp.factory('customerSvc', function ($http, transformRequestAsFormPost) {
return {
// ...
save2: function (customer, antiForgeryToken) {
$http({
method: 'POST',
url: '/Home/Save2',
transformRequest: transformRequestAsFormPost,
data: data
});
}
};
});https://stackoverflow.com/questions/24857950
复制相似问题