将数据从Angular https发布到C#控制器

时间:2014-08-01 21:50:23

标签: c# javascript asp.net-mvc angularjs

我已经阅读了与此主题相关的几个问题,并提供了一个有效的解决方案,但我不知道它是如何工作的,这似乎是错误的。 Angular的新手需要一些建议。将数据从Angular视图模型发布到C#MVC / .net 4.5控制器。

发布的角度方法

$scope.UpdateData = function () {
    $http({
        method: 'POST',
        url: '/Certification/Configuration/' + certId + '/DisplayCategory/Update',
        data: $scope.viewModel,
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }

    }).
    success(function (response) {
        alert("success");
    }).
    error(function (response) {
        alert("sbf !!!");
    });
}

这是C#控制器中的方法

    public JsonResult Update(FormCollection collection)
    {
        string postedValue = Request.Form[0].ToString();

        DisplayCategoriesViewModel displayCategories;
        JavaScriptSerializer jss = new JavaScriptSerializer();
        displayCategories = jss.Deserialize<DisplayCategoriesViewModel>(postedValue);

        JsonResult jr = new JsonResult();
        jr.Data = "Is SF or UF";
        return (jr);        
    }

有更好的方法吗?神奇的数字Request.Form [0]似乎错了。我试过用json.stringify从浏览器发布viewModel,但只是得到null。

任何想法,建议?

更新 - 对于那些感兴趣的人是工作代码

角度控制器

$scope.UpdateData = function () {
        $http({
            method: 'POST',
            url: '/Certification/Configuration/' + certId + '/DisplayCategory/Update',
            data: JSON.stringify($scope.viewModel)
        }).
        success(function (response) {
            alert("success");
        }).
        error(function (response) {
            alert("sbf !!!");
        });
}

C#Controller

    public JsonResult Update(DisplayCategoriesViewModel viewModel)
    {
        //Do stuff here

        JsonResult jr = new JsonResult();
        jr.Data = "Is SF or UF";
        return (jr);        
    }

1 个答案:

答案 0 :(得分:2)

是的,有更好的方法。

在C#Web项目中,您需要添加模型类来代替表单集合。所以假设你的viewmodel是一辆汽车,你可能想创建一个这样的类:

public class CarViewModel {
    public string Make { get; set; }
    public string Model { get; set; }
}

您需要确保属性名称与角度视图模型中使用的属性名称相匹配。

然后,您将从以下位置更改控制器操作签名:

public JsonResult Update(FormCollection collection)

要:

public JsonResult Update(CarViewModel viewModel)

进入后,您可以直接访问所有属性。