如何在选项工具提示的下拉列表中使用对象属性
本文关键字:对象 属性 下拉列表 选项 工具提示 | 更新日期: 2023-09-27 18:18:24
经过大量不成功的搜索,我希望你们能帮助我在这里…
我所知道的:可以通过
为下拉列表选项生成工具提示<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
只允许通过IEnumerable<SelectListItem> selectList
参数绑定<option>
文本和值(就像您正在做的那样)。
问题是你不能从客户端javascript访问模型中的其他属性。Javascript不知道你的c#对象
我认为正确的方法是生成以下HTML:
<select>
<option value="ValueProperty1" title="Property1 has: Property2 and Property3">TextProperty1</option>
...
</select>
你甚至不需要jquery。
如何实现这一点?我认为您最好通过扩展SelectListItem
来实现一个可靠的解决方案,并创建一个新的助手方法来生成下拉列表。
下面的答案正是这样做的:在html中添加html类标签。DropDownList