javascript - 什么可能导致 ViewData ["x"].ToString 不起作用?

标签 javascript html asp.net-mvc razor

我想在 MVC5 应用程序上显示颜色选择器。如果手动输入并针对使用它的每个页面进行调整,则此功能将起作用。显然,这是过度重复的代码,因此我创建了一个 Utils 方法来生成数据。以下是该方法的定义:

    public static string GetColorsList()
    {
        string colorsList = "<option style=\"color:gray\" value=\"null\">select color</option>" +
                            "<option style=\"color:azure\" value=\"Azure\">Azure</option>" +
                            "<option style=\"color:blue\" value=\"Blue\">Blue</option>" +
                            "<option style=\"color:cyan\" value=\"Cyan\">Cyan</option>" +
                            "<option style=\"color:green\" value=\"Green\">Green</option>" +
                            "<option style=\"color:magenta\" value=\"Magenta\">Magenta</option>" +
                            "<option style=\"color:orange\" value=\"Orange\">Orange</option>" +
                            "<option style=\"color:red\" value=\"Red\">Red</option>" +
                            "<option style=\"color:violet\" value=\"Violet\">Violet</option>" +
                            "<option style=\"color:yellow\" value=\"Yellow\">Yellow</option>";

        return colorsList;
    }

我返回字符串而不是 IEnumerable 的原因是 JS 方法使用以下方法向页面添加新数据(即在表中创建新行):

$(#tablename tbody).append(newcontent);

其中新内容是要插入的 HTML 字符串。理想情况下,我可以创建一个 Html.DropDownList 来显示选择器内容,但这不会返回字符串友好的结果。

我想要完成的:获取颜色列表,放入 ViewData["x"] 中,将 ViewData["x"] 转换为字符串,然后将该字符串与属于其中的其他内容连接起来新内容。

ViewData["x"].ToString() 产生以下结果:

&lt;option style=&quot;color:gray&quot; value=&quot;null&quot;&gt;select 
color&lt;/option&gt;&lt;option style=&quot;color:azure&quot; value=&quot;
Azure&quot;&gt;Azure&lt;/option&gt;&lt;option style=
&quot;color:blue&quot; 
value=&quot;Blue&quot;&gt;Blue&lt;/option&gt;&lt;option style=&quot;
color:cyan&quot; value=&quot;Cyan&quot;&gt;Cyan&lt;/option&gt;&lt;
option style=&quot;color:green&quot; value=&quot;Green&quot;&gt;
Green&lt;/option&gt;&lt;option style=&quot;color:magenta&quot; value=
&quot;Magenta&quot;&gt;Magenta&lt;/option&gt;&lt;option style=
&quot;color:orange&quot; value=&quot;Orange&quot;&gt;Orange&lt;/option
&gt;&lt;option style=&quot;color:red&quot; value=&quot;Red&quot;&gt;
Red&lt;/option&gt;&lt;option style=&quot;color:violet&quot; value=
&quot;Violet&quot;&gt;Violet&lt;/option&gt;&lt;option style=
&quot;color:yellow&quot; value=&quot;Yellow&quot;&gt;Yellow&lt;/option&gt;);

这里的解决方法是运行:

        colorpickerContent = colorpickerContent.replace("$lt;", "<");
        colorpickerContent = colorpickerContent.replace("$gt;", ">");
        colorpickerContent = colorpickerContent.replace("&quot;", "\"");

这样所有正确的字符都存在。运行时,程序会抛出语法错误,因为输出未以将其视为字符串所需的引号开头。关于如何使 ViewData["x"] 成为可用的字符串有什么建议吗?我尝试了 JSON.stringify() 但发现了类似的结果。

最佳答案

您正在寻找HtmlString那个人不会逃脱。

关于javascript - 什么可能导致 ViewData ["x"].ToString 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36559948/

相关文章:

javascript - 在 jQuery 函数问题中使用 id 两次

html - 防止 meyer reset css 弄乱动态内容

asp.net-mvc - 正则表达式匹配数值范围

javascript - jQuery 矢量 map 中的切换功能

javascript - mocha 的全局 `before` 和 `beforeEach`?

javascript - 为什么注释或工具提示没有出现在本系列中

javascript - 使用 javascript 隐藏/显示文本?

javascript - Kendo Validate - 忽略特定输入

asp.net - 如何创建和管理 Multi-Tenancy ASP MVC 应用程序

javascript - 文本区域的值(value)?如何填写一个?