无法将Angular List(JsonList)传递给C#

时间:2018-03-08 01:17:09

标签: c# asp.net angularjs model-view-controller

我知道这已被问过很多次了。但请相信我,我已经尝试过它们,但这不起作用。

我有这个简单的列表和方法: -

$scope.TblData = [];
        var Name='Name'; var Desc='Desc';
        $scope.TblData = [
            { Key: Name, Value: ClassSubjectName },
            { Key: Desc, Value: ClassSubjectDesc }
        ];
        InsertFactory.InsertClassSubject($scope.TblData).then(function (d) {
            alert(d.data + ' Subject Details');
        }, function (error) {
            alert('Cannot Save Contact Details');
        })

我在工厂得到的是: -

    BoardObj.InsertClassSubject = function (TblData) {
    var ViewID = 'ClassSubject';
    var Data = $.param({ TblList: ViewID, TblData: TblData });
    return $http({
        method: 'POST',
        url: '/Admin/InsertTblData',
        data: JSON.stringify(Data),
        headers: {
            "Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
        }
    });
}

尝试在服务器上获取它: -

if (Request.Form["TblData"] != null)
        {
            JsonData =  Request.Form["TblData"].ToString();
        }
        aBundleInsert.TblDataParams = JsonConvert.DeserializeObject<List<KeyValuePair<string, string>>>(JsonData);

当然我做错了但找不到问题。

1 个答案:

答案 0 :(得分:0)

您不是以表格发布的方式发布数据。 TblDatascope变量,它不会进入Form对象,Form仅适用于输入元素。

理想情况下,您应该将数据发布到服务器端的model,但如果您仍想在服务器端访问它,则可以尝试以下操作。

string postContent = "";
HttpContext.Current.Request.InputStream.Position = 0;
using (var reader = new StreamReader(Request.InputStream, 
System.Text.Encoding.UTF8, true, 4096, true))
{
    if (HttpContext.Current.Request.ContentLength > 0)
    {
        postContent = reader.ReadToEnd();
    }
}