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仍然希望数据以字符串格式发布。