将动态变量转换为类时出错

本文关键字:出错 转换 动态 变量 | 更新日期: 2023-09-27 18:30:14

我使用ajax来确定何时更改下拉列表值,并将3个下拉列表的值传递给一个方法来确定价格。我使参数成为动态的,并创建了一个类来保存数据,但在getNewPrice方法中,当我试图访问var项信息时,我得到了一个null。我对这方面还很陌生,但我了解这个概念,我对如何将动态变量转换回字符串以便访问信息感到困惑。

$(document).ready(function () {
    $('#documentTypeList').change(function () {
        var modelData = {
            documentType: $("#documentTypeList").val(),
            urgency: $("#urgencyList").val(),
            numberOfPages: $("#numberOfPagesList").val()
        };
        $.ajax({
            type: "GET",
            data: modelData,
            url: "/Home/getNewPrice",
            async: true,
            success: function (result) {
                 document.getElementById('priceLabel').innerHTML = data.currentPrice;
            }
    });
    });
    public class modelData
    {
        public string documentType { get; set; }
        public string numberOfPages { get; set; }
        public string urgency { get; set; }
    }
    public JsonResult getNewPrice(modelData dropdownValues)
    {
        decimal currentPrice = Convert.ToDecimal(dropdownValues.urgency);
        // do something with value and return a decimal
        return Json(new { currentPrice = currentPrice }, JsonRequestBehavior.AllowGet);
    }

将动态变量转换为类时出错

我过去使用过javascript序列化程序。使用反序列化()函数。更具体地说=>c#

    var list = serializer.Deserialize<List<GetJson>>(Request.Form["dataDetails"].ToString());
    internal class GetJson{
        public string variable1 {get;set;} //add your properties here
    }
Javascript
                    $.fn.serializeObject = function () {
                        var o = {};
                        var a = this.serializeArray();
                        $.each(a, function () {
                            if (o[this.name] !== undefined) {
                                if (!o[this.name].push) {
                                    o[this.name] = [o[this.name]];
                                }
                                o[this.name].push(this.value || '');
                            } else {
                                o[this.name] = this.value || '';
                            }
                        });
                        return o;
                    };
                    $.ajax({
                        url: "url",
                         dataType: "json",
                         data: {
                            DataDetails: "[" + JSON.stringify($("#form1").serializeObject()) + "]"
                                },

如果你需要它更动态,你可以使用动态类型。

var list = serializer.Deserialize<List<dynamic>>(Request.Form["dataDetails"].ToString());

模型绑定器需要知道您的特定类型。它在属性中循环并指定值。

尝试

 url: '/Home/getNewPrice',
 data: modelData
public JsonResult getNewPrice(modelData dropdownValue)
{
    //...
    return Json(new { currentPrice = currentPrice }, JsonRequestBehavior.AllowGet);
}
document.getElementById('priceLabel').innerHTML = data.currentPrice;