如何在选项工具提示的下拉列表中使用对象属性

本文关键字:对象 属性 下拉列表 选项 工具提示 | 更新日期: 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