Как использовать свойства объекта в выпадающем списке для всплывающих подсказок? - PullRequest
3 голосов
/ 21 декабря 2011

После обширного безуспешного поиска, я надеюсь, что вы, ребята, можете мне помочь здесь ...

Что я знаю: возможно генерировать всплывающие подсказки для опций выпадающего списка через

<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>

1 Ответ

3 голосов
/ 21 декабря 2011

Предоставленный помощник 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.

Следующий ответ делает именно это: Добавление тега html-класса в Html.DropDownList

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...