Angular $ http发布到MVC动作,参数为null

时间:2014-10-21 18:36:13

标签: javascript asp.net-mvc angularjs

所以我这样做:

$http.post(Common.blog.save, { blog: blog })
    .then(saveBlogComplete)
    .catch(function(message) {

    });

我在fiddler输出中得到了这个:

{"blog":{"title":"Chicken Is Good","content":"#Chicken Is Good\n##Contents\n* Introduction\n* Factfile\n* Analysis\n* Evaluation\n* Conclusion\n###Introduction\n\n###Factfile","dateAuthored":"","userId":""}}

在我的行动中:

[HttpPost]
public JsonResult Save(string blog)
{
    var desBlog = JsonConvert.DeserializeObject<BlogDto>(blog);

    return this.ExecuteService(() => this.blogService.Save(desBlog));
}

string blog回来了......我不确定为什么会这样?

我做了以下

  • 在JavaScript中放置断点 - 数据正在填充
  • 评论Fiddler输出 - 数据与JavaScript obj
  • 相同
  • 在行动中放置断点 - 它被调用,HttpContext没有关于POST数据的任何数据

2 个答案:

答案 0 :(得分:2)

如果您将mvc操作参数从stringify更改为String,则您的代码无法使用Blog函数运行:

public class Blog
{
   public string Title {get; set;}
   public string Content {get; set;}
   public DateTime DateAuthored {get; set;}
   public long UserId {get; set;}
}

[HttpPost]
public JsonResult Save(Blog blog)
{

发生这种情况是因为服务器端的blog模型与从角度传递参数的结构不匹配。

答案 1 :(得分:0)

我只需要stringify数据!

$http.post(Common.blog.save, { blog: JSON.stringify(blog) })
    .then(saveBlogComplete)
    .catch(function(message) {

    });