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

Angular $http post to MVC action, parameter is null

本文关键字:操作 参数 null MVC http Angular      更新时间:2023-09-26

所以我做这篇文章:

$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将返回null。。。。我不知道为什么会发生这种事?

我已经完成了以下

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

如果您将mvc操作参数从String更改为Blog:,那么您的代码将在没有stringify函数的情况下工作

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模型与从angular传递参数的结构不匹配。

我只需要stringify数据!

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