通过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();
    }

然而,我不认为这是最佳实践,因为首先我将所有内容都作为字符串发送并解析,但也因为如果我的标题或内容项有一个"字符,那么程序就会出错。我想知道做这件事最好的方法是什么。我相信另一种方法是将我的模型作为参数传递给我的方法,但我想知道除此之外是否还有其他方法可以做到这一点。正如我所说,这不是一个非常具体的问题,我只想了解最佳实践。(如果能提供一点代码来支持您的响应,我们将不胜感激)

谢谢!

通过AngularJS将JSON发布到Asp.net

您应该允许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();
}