通过AngularJS将JSON发布到Asp.net
本文关键字:Asp net AngularJS JSON 通过 | 更新日期: 2023-09-27 17:57:26
我目前正在一个网站上工作,只是为了好玩,使用AngularJS和ASP.net,这篇文章是一个更普遍的问题,因为我不想知道如何做到这一点,我或多或少想知道最好的做法是什么。目前我在Angular中有一种方法,比如
$scope.submit = function () {
console.log(JSON.stringify($scope.form));
$http.post("/post/new", "'" + JSON.stringify($scope.form) + "'").
success(function (data, status, headers, config) {
console.log("Success")
$location.path("/news");
}).error(function (data, status, headers, config) {
console.log("Error");
});
};
然后我对应的Asp.net代码:
[HttpPost][Route("New")]
public IHttpActionResult New([FromBody] string input)
{
JObject json = JObject.Parse(input);
Post p = new Post { Title = (string)json["title"], content = (string)json["content"] };
db.Posts.Add(p);
db.SaveChanges();
return Ok();
}
然而,我不认为这是最佳实践,因为首先我将所有内容都作为字符串发送并解析,但也因为如果我的标题或内容项有一个"字符,那么程序就会出错。我想知道做这件事最好的方法是什么。我相信另一种方法是将我的模型作为参数传递给我的方法,但我想知道除此之外是否还有其他方法可以做到这一点。正如我所说,这不是一个非常具体的问题,我只想了解最佳实践。(如果能提供一点代码来支持您的响应,我们将不胜感激)
谢谢!
您应该允许JSON。Net在pipleline中为您进行反序列化,而不是在您的方法中。此外,只需发布对象本身,而不是构建json字符串
$scope.submit = function () {
$http.post("/post/new", $scope.form).
success(function (data, status, headers, config) {
console.log("Success")
$location.path("/news");
}).error(function (data, status, headers, config) {
console.log("Error");
});
};
[HttpPost][Route("New")]
public IHttpActionResult New([FromBody] Post input)
{
db.Posts.Add(input);
db.SaveChanges();
return Ok();
}