我想在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);
其中new content是要插入的HTML字符串。理想情况下,我可以创建一个Html.DropDownList来显示选择器内容,但这不会返回字符串友好的结果。
我想要完成的事情:将colorsList放入ViewData [“x”]中,将ViewData [“x”]转换为字符串,并将该字符串与属于的其他内容连接起来newcontent。
ViewData [“x”]。ToString()产生以下结果:
<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>);
此处的解决方法是运行:
colorpickerContent = colorpickerContent.replace("$lt;", "<");
colorpickerContent = colorpickerContent.replace("$gt;", ">");
colorpickerContent = colorpickerContent.replace(""", "\"");
这样所有正确的角色都存在。运行时,程序会抛出语法错误,因为输出不是以将其视为字符串所需的引号开头的。关于如何使ViewData [“x”]成为可行字符串的任何建议?我尝试了JSON.stringify(),但发现了类似的结果。