3

您好,我在控制器中有此代码:

   ViewBag.localitate = db.Localitatis.OrderBy(p => p.Localitate).ToList();

在视图中,我尝试通过以下方式获取它:

<script type="text/javascript">
    $(function () {
        var availableTags = [
         @foreach (var item in ViewBag.localitate)
              {
                       @item.Localitate 
             }


    ];
        $("#destination").autocomplete({
            source: availableTags
        });
    });
</script>

我不知道如何格式化它以获得像 jquery 演示示例中的数组:

"ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "Scheme"

为了使自动完成功能与我在数据库中的值一起工作,

谢谢你

4

2 回答 2

2
<script type="text/javascript">
    $(function () {
        $("#destination").autocomplete({
            source: @Html.Raw(Json.Encode(ViewBag.localitate))
        });
    });
</script>

如果您有大量数据,请考虑使用服务器端控制器操作来执行过滤。

于 2012-08-30T22:31:46.360 回答
0

首先,将您的视图数据设置为只有您想要的实际名称:

ViewBag.localitate = db.Localitatis.Select(p => p.Localitate).OrderBy(p => p).ToList();

那么在 javascript 中呈现它的最简单方法是:

var availableTags = [" @String.Split("\,\"", ViewBag.localitate) "];

但我建议改用 JSON.NET 之类的 JSON 解析器。这样您就不必担心跨站点脚本攻击等,因为事情已经为您逃脱了。

var availableTags = @(JsonConvert.Serialize(ViewBag.localitate));
于 2012-08-30T22:29:53.907 回答