其他分享
首页 > 其他分享> > CodeGo.net>如何使用对象属性在下拉列表中的选项工具提示?

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

作者:互联网

经过广泛失败的搜索,我希望你们能在这里帮助我…

我所知道的:可以通过以下方式为下拉列表选项生成工具提示

<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,jquery,asp-net-mvc-3
来源: https://codeday.me/bug/20191202/2084678.html