【问题标题】:c# string[] to jquery string list?c#string[] 到 jquery 字符串列表?
【发布时间】:2011-12-04 21:43:53
【问题描述】:

尝试使用以下方法,但不是解决方案

控制器:

var list = new [] { "one", "two", "three" };
ViewData["List"] = javaScriptSerializer.Serialize(list);

jquery:

var list = [ '@ViewData["List"]' ];
$("#numbers").autocomplete({
    source: list
});

【问题讨论】:

  • 没有 jquery 字符串列表之类的东西...在浏览器的查看源代码中检查服务器输出的"var list = ..."
  • 它是['[“一”、“二”、“三”]'];
  • 在客户端制作一个javascript数组,输出需要"["one", "two", "three"]"
  • 我意识到了,但是 javascript 序列化程序没有那样输出

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


【解决方案1】:

在您的页面中(可能是 razor,根据您的语法),声明您的列表如下:

var list = @Html.Raw(ViewData["List"]);

在您当前的实现中,HtmlHelper 正在对您的字符串进行编码以在网页中正确显示,这显然是您不希望的(因此使用了 HtmlHelper.Raw),并且您还在数组中嵌套了一个数组。

【讨论】:

  • 这给了我以下一个使用 javascript 序列化程序的大长字符串['["ActionScript","AppleScript","Asp","BASIC","C","C++","Clojure ","COBOL","ColdFusion","Erlang","Fortran","Groovy","Haskell","Java","JavaScript","Lisp","Perl","PHP","Python", "Ruby","Scala","Scheme"]'];
  • 这不是您的预期吗?
  • 我想通了,我已将其添加为 var list = ['@ViewData... 您的示例有效,谢谢。
【解决方案2】:

使用这个:

var list = [ '@Html.Raw(ViewData["List"])' ];
$("#numbers").autocomplete({
    source: list
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    相关资源
    最近更新 更多