在我的viewData中,我有一个IList mls。 我想用它来显示下拉列表。像这样:
<%= Html.DropDownList("ml3Code",
new SelectList(Model.Mls, "Code", "Description", Model.Ml3.Code ?? ""),
Model.T9n.TranslateById("Labels.All"),
new { @class = "searchInput" })%>
这样可以正常工作,直到myObject.Code == VOC <420 g / l。 我原以为HTML帮助器会对其值进行编码,但事实并非如此。 我该如何处理这个问题?我唯一能想到的是首先使用编码值制作对象的重复列表,然后将其提供给选择列表。这真是太麻烦了。
P.S。我希望Phill H.和他的团队能够长期彻底地了解asp.net-mvc 2.0的encoding ...
答案 0 :(得分:2)
我很困惑。问题“Do ASP.NET MVC helper methods like Html.DropDownList() encode the output HTML?”之前被问过,答案是“是” - 并且引用了MVC框架的源代码来支持这个断言。
答案 1 :(得分:1)
好吧,你可以推出自己的Html助手,但如果你像我一样,你就不会那样做。
对我来说,我在这里看到两个选择:
在没有帮助器的普通视图中编写select元素。我从来没有觉得帮助者为发生错误时突出显示元素提供了很多保存。
在页面加载时修补客户端上的选择框,如:
function encodeHtml(str) { var encodedHtml = escape(str); encodedHtml = encodedHtml.replace(/// g,“%2F”); encodedHtml = encodedHtml.replace(/ \?/ g,“%3F”); encodedHtml = encodedHtml.replace(/ = / g,“%3D”); encodedHtml = encodedHtml.replace(/&amp; / g,“%26”); encodedHtml = encodedHtml.replace(/ @ / g,“%40”); return encodedHtml; }
window.onload = function()
{
var ml3Code = document.getElementById("ml3Code");
for(var i = 0; i < ml3Code.options.length; ++i)
{
ml3Code.options[i].value = encodeHtml(ml3Code.options[i].value);
}
};
这是一个黑客,我知道。我非常喜欢第一选择。
答案 2 :(得分:0)
这是编码的。但是不要用萤火虫检查 - 它显示了解码的值。
检查浏览器的ViewSource并对事物进行编码。
<强>控制器强>
public List<CategoryInfo> GetCategoryList()
{
List<CategoryInfo> categories = new List<CategoryInfo>();
categories.Add(new CategoryInfo { Name = "Food<äü", Key = "VOC<420 g/l", ID = 2, Uid = new Guid("C0FD4706-4D06-4A0F-BC69-1FD0FA743B07") });
}
public ActionResult Category(ProductViewModel model )
{
IEnumerable<SelectListItem> categoryList =
from category in GetCategoryList()
select new SelectListItem
{
Text = category.Name,
Value = category.Key
};
model.CategoryList = categoryList;
return View(model);
}
查看强>
<%= Html.DropDownList("Category" , Model.CategoryList) %>
<强>模型强>
public class ProductViewModel
{
public IEnumerable<SelectListItem> CategoryList { get; set; }
public List<CategoryInfo> Categories { get; set; }
}
<强> HTML 强>
<select id="Category" name="Category"><option value="VOC<420 g/l">Food<äü</option>
</select>