【问题标题】:html dropdownlist helper in javascriptjavascript中的html下拉列表助手
【发布时间】:2013-05-15 18:32:31
【问题描述】:

我想将一个本地 javascript 变量设置为 html 帮助程序的输出。示例见以下 sn-p:

<script type="text/javascript">
     $(function () {
              var dtypes = '@Html.DropDownList("TypeId",new SelectList(@ViewBag.MyTypes,"Value","Text"))';
      });
      alert(dtypes);
</script>

这不会给我警报。难道我做错了什么? 感谢您的帮助。

【问题讨论】:

  • 这段代码没有任何意义。 @Html.DropDownList&lt;select&gt; 元素生成 HTML 标记。您究竟想在这里实现什么目标?
  • 我想在我的 js 中使用 html 标记。
  • 我敢打赌你在使用它时会遇到语法错误。 DropDownList 方法将在其输出中添加一些新行,以便您的字符串未终止。您可能必须创建自己的扩展方法才能完成这项工作。或者,更好的是,为什么在 Javascript 对象中有 HTML 标记?

标签: javascript asp.net-mvc razor html-helper


【解决方案1】:

您应该将您的 html 编码为有效的 JavaScript 字符串:

<script type="text/javascript">
 $(function () {
          var dtypes = '@Ajax.JavaScriptStringEncode(Html.DropDownList("TypeId",new SelectList(@ViewBag.MyTypes,"Value","Text")))';
  });
  alert(dtypes);
</script>

【讨论】:

  • 我在使用@HTML 助手 DropDownList 时遇到了类似的问题。我将您的代码复制并粘贴到我的 .cshtml 文件中,并且在 Ajax.JavaScriptsStringEncode 方法上出现“重载...有一些无效参数”错误。任何想法为什么它不能在 C# Razor 文件中工作?
  • 如果我将字符串括在 "" 中,然后用 \" 转义字符串中的 "s",则编码有效: var dtypes = '@Ajax.JavaScriptStringEncode("Html.DropDownList(\"TypeId\ ",new SelectList(@ViewBag.MyTypes,\"Value\",\"Text\"))")';但它并没有解决我的问题,因为我正在编码以使用 jQuery .html() 注入节点。但是当注入到节点中时,它会呈现为字符串而不是 HTML DropDownList Helper。请看我的帖子stackoverflow.com/questions/17904426/…
  • 你应该用 Html.Raw 包围 Ajax.JavaScriptStringEncode 所以你需要@Html.Raw(Ajax.JavaScriptStringEncode())
  • var dtypes = @Html.Raw(Ajax.JavaScriptStringEncode(Html.DropDownList("TypeId",new SelectList(@ViewBag.MyTypes,"Value","Text"))));给出相同的“无效参数”错误。请您完整地写出您对原始 var dtypes 示例的建议语法。即使该编码可以工作,它是否会在使用 .html() 更新节点时呈现为 html 代码,而不是文本字符串?最好在我的stackoverflow.com/questions/17904426/… 帖子中回答,因为我们与这篇帖子中的原始问题相距甚远。谢谢。
【解决方案2】:

您可以简单地在引号前的字符串中使用@Ajax.JavaScriptStringEncode("")\

您的代码将是:

var dtypes = '@Ajax.JavaScriptStringEncode("Html.DropDownList(\"TypeId\", 
   new SelectList(@ViewBag.MyTypes,\"Value\",\"Text\"))")';

【讨论】:

    【解决方案3】:

    使用@Ajax.JavascriptStringEncode() 编码您的html 助手;并且不要忘记使用 .ToString() 将 Html.DropDownList Helper 转换为字符串。

    这是一个例子:

    <script type="text/javascript">
        $(function () {
          var dtypes = '@Ajax.JavaScriptStringEncode(Html.DropDownList("TypeId",new SelectList(@ViewBag.MyTypes,"Value","Text")).ToString())';
         });
        alert(dtypes);
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-07
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2013-01-05
      相关资源
      最近更新 更多