Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $http post到MVC操作,参数为null_Javascript_Asp.net Mvc_Angularjs - Fatal编程技术网

Javascript $http post到MVC操作,参数为null

Javascript $http post到MVC操作,参数为null,javascript,asp.net-mvc,angularjs,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* Anal

所以我写这篇文章:

$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));
}
[HttpPost]
公共JsonResult保存(字符串日志)
{
var desBlog=JsonConvert.DeserializeObject(blog);
返回this.ExecuteService(()=>this.blogService.Save(desBlog));
}
string blog
返回空值。。。。我不知道为什么会这样

我已经做了以下工作

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

我只需要将数据字符串化

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

    });

如果将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传递参数的结构不匹配。

是否尝试将对象字符串化<代码>{blog:JSON.stringify(blog)}(使用JSON2 js库)我没有,我会试试看!这将根据发布的数据自动创建blog对象,但我相信MVC仍然希望数据以字符串格式发布。