我有一个包含一些文档列表的Viewbag,列表中的一个文档名称为" test1> test2"。我的html语法看起来像
@Html.DropDownList("Documents", (SelectList)ViewBag.Documents, "--Select Document--", new { @class = "selectField" })
当它在浏览器中打开时,下拉列表会显示文档名称" test1> test2"显示为" test2& gttest1"(在& gt之后具有semicolan)。我如何显示名称" test1> test2"取代" test2& gttest1"?
修改
当我详细检查它时,问题不在于我的剃刀语法,而是使用jquery来绑定我的下拉列表uisng" test1> test2"值。我的jquery看起来如下。
jq("#Documents" + "> option").remove();
jq("#Documents").append(jq("<option />").val('@ViewBag.DraftDocId').text('@ViewBag.DraftDocTitle'));
这里ViewBag.DraftDocTitle是&#34; test1&gt; test2&#34;值
答案 0 :(得分:1)
您可以将 HTMLDecode 应用于已编码的字符串。请参阅以下代码示例以绑定您的下拉列表:
@Html.DropDownList("Documents", ((SelectList)ViewBag.Documents).Select(i => { i.Text = HttpUtility.HtmlDecode(i.Text); return i; }), "--Select Document--", new { @class = "selectField" })
更新:使用JQuery
jq("#Documents" + "> option").remove();
jq("#Documents").append(jq("<option />").val('@ViewBag.DraftDocId').text('@HttpUtility.HtmlDecode(ViewBag.DraftDocTitle)'));
答案 1 :(得分:0)
请在您的问题的控制器部分添加创建ViewBag.Documents的代码。由于我已经尝试过,以下代码块一切正常,
控制器中的
List<string> elements = new List<string>();
elements.Add("test1>test2");
SelectList selectList = new SelectList(elements);
ViewBag.Documents = selectList;
在视图中
@Html.DropDownList("Documents", (SelectList)ViewBag.Documents, "--Select Document--", new { @class = "selectField" })
可能你是通过一些计算创建元素列表。我觉得有些不对劲。