首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Angularjs ASP.NET FormCollection 4 FormCollection是空的

使用Angularjs ASP.NET FormCollection 4 FormCollection是空的
EN

Stack Overflow用户
提问于 2014-07-21 04:53:00
回答 1查看 1.3K关注 0票数 1

我正在使用Angularjs (1.2.20)Microsoft ASP.Net MVC 4提交一个表单帖子

代码语言:javascript
复制
public ActionResult Save2(FormCollection customer)
{
   //TODO: Do some stuffs...
   return new HttpStatusCodeResult(HttpStatusCode.OK);
}

但是,FormCollection是空的。我知道正在发送数据,因为如果我将其更改为下面的代码(使用强类型的CustomerVm),它将按预期工作。

代码语言:javascript
复制
public ActionResult Save1(CustomerVm customer)
{
   //TODO: Do some stuffs...
   return new HttpStatusCodeResult(HttpStatusCode.OK);
}

我使用FormCollection,以便在数据中添加ASP.Net防伪造令牌(而不是头)。下面是我的自定义javascript代码。此外,还可以找到整个代码(Visual ) 这里

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-21 05:36:08

您需要用内容类型的application/x-www-form-urlencoded发送请求,并将请求体编码为这样。这是一个很好的开始,但是它以JSON的形式发送数据。

代码语言:javascript
复制
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服务。你可以尝试加入他的代码并对你的代码进行修改.

代码语言:javascript
复制
myApp.factory('customerSvc', function ($http, transformRequestAsFormPost) {
    return {
        // ...
        save2: function (customer, antiForgeryToken) {
            $http({
                method: 'POST',
                url: '/Home/Save2',
                transformRequest: transformRequestAsFormPost,
                data: data
            });
        }
    };
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24857950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档