经过广泛失败的搜索,我希望你们能在这里帮助我...
我所知道的:可以通过以下方式为下拉列表选项生成工具提示
<script type="text/javascript">
$(function () {
$("#someDropDownForList option").each(function () {
$(this).attr({ 'title': $(this).html() });
});
});
</script>
但是,就我而言,我想向用户提供有关选项的更多信息
<html>
<body>
<div>
@Html.DropDownListFor(
m => m.SomeModelProperty,
new selectList(Model.ListWithObjects, "Property1", "Property1"),
new { @id="someDropDownForList"})
</div>
</body>
</html>
如何使用jquery使用Property2和Property3为每个选项构造工具提示文本?
Property1 + " has: " + Property2 + " and " Property3
亲切的问候,
保罗
编辑:没有jQuery的解决方案
<div>
<select id="someDropDownForList ">
@foreach(var item in Model.ListWithObjects)
{
<option title="Some property is the @item.Property2: with the @item.Property3">
@item.Property1
</option>
}
</select>
</div>
最佳答案
提供的帮助程序Html.DropDownListFor
仅允许通过<option>
参数绑定IEnumerable<SelectListItem> selectList
文本和值(如您所做的那样)。
问题是您无法从客户端javascript访问模型中的其他属性。 Javascript不了解您的C#对象。
我认为正确的方法是生成以下HTML:
<select>
<option value="ValueProperty1" title="Property1 has: Property2 and Property3">TextProperty1</option>
...
</select>
您甚至不需要任何jquery。
如何实现呢?我认为最好通过扩展
SelectListItem
来实现可靠的解决方案,并创建一个新的辅助方法来生成DropDownList。以下答案正是这样做的:Adding html class tag under in Html.DropDownList
关于c# - 如何在下拉列表中使用对象属性以获得选项工具提示?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8589901/