首页 > 解决方案 > Asp.net mvc dropdownlist 级联错误无法设置属性“值”为空

问题描述

海。
我想制作下拉列表级联。选择下拉列表并发送 editorfor.but
Cannot set property 'value' of null error 。我想向编辑器发送一个值以获取下拉列表的值。
你能帮助我吗?

   public JsonResult GetPrice(string log)
        {
            int id = 1;
            HomeController.sqlconnection con = new HomeController.sqlconnection();
            string FIRMA = "select t.FIRMA,t.donem FROM dbo.TBLFRM as t where t.ID=" + id + "";
            SqlCommand cmd = new SqlCommand(FIRMA, con.connect());
            SqlDataReader rdrr = cmd.ExecuteReader();
            rdrr.Read();
            string firma = rdrr["FIRMA"].ToString();
            string donem = rdrr["DONEM"].ToString();
            ExtreModel item = new ExtreModel();
            item.ItemList = new List<ExtreModel>();
            string urun = "select P.PRICE from DBO.LG_" + firma + "_PRCLIST as p,DBO.LG_" + firma + "_ITEMS as I WHERE P.CARDREF=I.LOGICALREF AND P.CARDREF=" + log + "";

            SqlCommand cmdd = new SqlCommand(urun, con.connect());            
                SqlDataReader rdr = cmdd.ExecuteReader();
            rdr.Read();
                   string PRICE = rdr[0].ToString();
                con.connect().Close();
                return Json(PRICE, JsonRequestBehavior.AllowGet);

        }



 <script>
        $("#LOGI").change(function () {
            var select = $(this);
            var cityname = select.val();
            if (cityname != "") {
                $.ajax({
                    method: "GET",
                    url: '/Mobil/GetPrice' + '?log=' + cityname,
                    beforeSend: function () {

                    }
                }).done(function (result) {
                    document.getElementById("fyt").value = result.PRICE;
                });
            } else {
            }
        });
    </script>

标签: javascriptjqueryasp.netajaxmodel-view-controller

解决方案


问题似乎来自此return声明:

return Json(PRICE, JsonRequestBehavior.AllowGet);

此语句返回不包含PRICE属性的纯字符串值,因此result.PRICE包含空值并导致空属性分配错误消息。如果你想返回价格值,只需使用这个内部done函数:

document.getElementById("fyt").value = result;

或在 jQuery 版本中:

$('#fyt').val(result);

但如果您仍想返回PRICE属性,请在 JSON 数据中指定它:

return Json(new { PRICE = PRICE }, JsonRequestBehavior.AllowGet);

AJAX 回调应该是这样的:

$("#LOGI").change(function () {
    var cityname = $(this).val();
    if (cityname != "") {
        $.ajax({
            type: "GET",
            url: '/Mobil/GetPrice',
            data: { log: cityname }
            }).done(function (result) {
                $("#fyt").val(result.PRICE); // now the price property should exist
            });
    } else {
       // do something else
    }
});

推荐阅读