【问题标题】:Merging Razor with Jquery for autocomplete function将 Razor 与 Jquery 合并以实现自动完成功能
【发布时间】:2014-01-14 14:14:39
【问题描述】:

我正在使用本指南 http://jqueryui.com/autocomplete/#custom-data 以及我对 C# 和 razor 知之甚少,以便在选择其中一个时尝试自动完成 3 个文本框。

因此,如果我输入 partno 并从下拉列表中选择一个,则会填充项目名称、desc 和 ID。如果我输入任何其他字段,则相同。

我创建了一个类并将其放入列表中,其中包含项目

var varItems = new List<Item>();
            varItems = db.Items.Select(tbl => new Item
                    {
                            ID = tbl.ID,
                            Name = tbl.Name,
                            PartNo = tbl.PartNo,
                            Description = tbl.Description
                    }).ToList();

然后将其发送到 viewbag 中

ViewBag.Items = var.items;

然后在视图中

   $( "#Name" ).autocomplete({
        minLength: 0,
        source: @ViewBag.Items,
        focus: function( event, ui ) {
            $( "#Name" ).val( ui.item.label );
            return false;
        },
        select: function( event, ui ) {
            $( "#Name" ).val( ui.item.Name );
            $( "#PartNo" ).val( ui.item.PartNo );
            $( "#Description" ).html( ui.item.Description );
            return false;
        }
    });

但它不喜欢 viewbag 在那里。我猜我必须做一些循环来产生类似下面的东西?

var projects = [
      {
        value: "jquery",
        label: "jQuery",
        desc: "the write less, do more, JavaScript library",
        icon: "jquery_32x32.png"
      },
      {
        value: "jquery-ui",
        label: "jQuery UI",
        desc: "the official user interface library for jQuery",
        icon: "jqueryui_32x32.png"
      },
      {
        value: "sizzlejs",
        label: "Sizzle JS",
        desc: "a pure-JavaScript CSS selector engine",
        icon: "sizzlejs_32x32.png"
      }
    ];

如果是这样,我如何循环我的列表来创建上述内容?

谢谢大家

【问题讨论】:

    标签: c# jquery asp.net-mvc jquery-ui razor


    【解决方案1】:

    试试这个:

    source: @Html.Raw(Json.Encode(@ViewBag.Items));
    

    这会将您的项目编码为 json,它应该可以工作。

    【讨论】:

    • 我得到一个空的下拉列表出现在名称字段下?
    • 这可能是其他错误,您能否确认 json 生成正确?检查 Html 源代码。
    • 我认为它看起来不错:来源:[{"ID":1,"Name":"HP DL360p","PartNo":" 670638-425","Description":"" },{"ID":2,"Name":"Samsung 840 Pro 256GB","PartNo":"","Description":"256GB SSD"}]
    • 那么如果您将其更改为静态 json,您将遇到与现在相同的问题,它不是 enconding 或管理 viewbag,而是您正在使用的 jquery。也许创建其他问题并使用 jsfiddle.net 来显示正在发生的事情,有人可以帮助你。
    • 好吧,我试试看,感谢您对 json 的帮助 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2012-08-04
    • 2012-09-27
    • 1970-01-01
    • 2022-08-15
    • 2011-06-26
    相关资源
    最近更新 更多