0

我有一个 asp.net mvc4 应用程序剃须刀,我想在其中添加自动完成功能,我添加了一个availableTags具有不同值的示例表,它可以工作,但是当我尝试使用ArrayListjavascript 表时:

@{
    ArrayList elements = new ArrayList();
    elements=(ArrayList)Session["elements"];

}
     <script>
            $(function () {
                var champ = "@elements";
                var availableTags = [
                  "ActionScript",
                  "AppleScript",
                  "Asp",
                  "BASIC",
                  "C",
                  "C++",
                  "Clojure",
                  "COBOL",
                  "ColdFusion",
                  "Erlang",
                  "Fortran",
                  "Groovy",
                  "Haskell",
                  "Java",
                  "JavaScript",
                  "Lisp",
                  "Perl",
                  "PHP",
                  "Python",
                  "Ruby",
                  "Scala",
                  "Scheme"
                ];
              $("#tags").autocomplete({
                    source: champ
                });
            });
      </script> 

它失败!!!这个问题的原因是什么?我该如何解决?

4

1 回答 1

2

您不能只将 javascript 变量设置为 C# 变量。Razor 处理您的 CSHTML 并输出 html。javascript 在客户端上执行。您生成的 HTML 是什么样的?我认为您需要将其转换为 JSON,请尝试以下操作:

@{
    ArrayList elements = new ArrayList();
    elements=(ArrayList)Session["elements"];
    var ser = new System.Web.Script.Serialization.JavaScriptSerializer();
    var json = ser.Serialize(elements);
    var html = new HtmlString(json);
}
<script>
    $(function () {
        var champ = @html;
于 2013-10-29T22:40:00.863 回答