【问题标题】:mvc- jquery - json encode attribute searchmvc- jquery - json 编码属性搜索
【发布时间】:2018-07-11 05:08:32
【问题描述】:

我正在使用 MVC 和 JQuery,我遇到以下情况: 我有一个使用 ViewData["product"] 自动填充的下拉列表(数据从控制器中的数据库传递到此视图数据),我还有一个名为 price 的文本框, 我的目标是当用户选择产品时,价格文本框应该填写相应的产品价格,我有一个 viewdata["retailprice"],这就是我目前得到的

 $("#productname").change(function ()
                {
                    getprice();
                })
                function getprice()
                {
                    var productname = $("#productname").val();
                    var clienttype = $("#clienttype").val();


                    if (clienttype  == "Retail")
                    {
                        var x = {};
      for(x in JSON.parse('@Html.Raw(Json.Encode(ViewData["retailprice"]))'))
                        {
                            if(x == productname)
                            {
                                $("#productprice").val(x);
                                break;
                            }
                        }
                    }   
                }

json 编码的值看起来像这样

[{"Disabled":false,"Group":null,"Selected":false,"Text":"1.75","Value":"1"},{"Disabled":false,"Group":null,"Selected":false,"Text":"2.50","Value":"2"},{"Disabled":false,"Group":null,"Selected":false,"Text":"4.90","Value":"3"},{"Disabled":false,"Group":null,"Selected":false,"Text":"4.70","Value":"4"},{"Disabled":false,"Group":null,"Selected":false,"Text":"8.70","Value":"6"},{"Disabled":false,"Group":null,"Selected":false,"Text":"50.00","Value":"10"}]

productname 变量包含值属性 ex。 “2”所以基本上我想做这样的事情

if(x.value == productname)
                        {
                            $("#productprice").val(x.text);
                            break;
                        }

我知道这不是正确的语法,但这只是为了解释。 仅供参考,当我更改产品名称下拉列表时,产品价格文本框仅将值更改为 1 或 2 或 3 或 4,老实说,我不知道这些值来自哪里

【问题讨论】:

  • x 是一个对象,所以它必须是 if (x.Value == productname) { $("#productprice").val(x.Text); ... }(注意 javascript 区分大小写)
  • 附带说明,它只是for(x in @Html.Raw(Json.Encode(ViewData["retailprice"]))) - 将数组转换为字符串然后再将其转换回数组的额外开销

标签: jquery json asp.net-mvc viewdata


【解决方案1】:

在循环here 中查看 for.. 的文档。将代码更改为:

const data = JSON.parse('@Html.Raw(Json.Encode(ViewData["retailprice"]))');
for(x in data)
{
        if(data[x].Value == productname)
        {
                $("#productprice").val(data[x].Text);
                break;
        }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    相关资源
    最近更新 更多