Добавить атрибут для выбора опции списка

У меня есть список элементов в раскрывающемся списке в представлении Razor. В базе данных каждый элемент имеет 3 связанных с ним значения -идентификатор базы данных, короткое имя (для отображения )и длинное имя (для передачи службе ). В раскрывающемся списке должно отображаться короткое имя, поэтому я заполняю раскрывающийся список идентификатором базы данных в качестве значения и коротким именем в качестве текста.

Однако, когда пользователь выбирает элемент, мне нужно передать длинное имя в качестве параметра запроса в службу поиска с помощью jQuery, например, когда Cortina выбрана, «Ford Cortina 1979 Blue» необходимо передать в службу.Моя первая мысль - сохранить длинное имя в качестве атрибута тире данных, но мне интересно, есть ли лучший способ. Так

  • Как сохранить все 3 значения в раскрывающемся списке?
  • Если я использую атрибуты тире данных, как мне включить все значения LONG _NAME в Html.DropDownListFor или как-то добавить их в раскрывающийся список?

БД:

CARID SHORT_NAME LONG_NAME
1     Viper     Dodge Viper 1982
2     Boxster   Porsche Boxster 2009 Black
3     Cortina   Ford Cortina 1979 Blue

Помощник контроллера для создания раскрывающегося списка:

public static IEnumerable<SelectListItem> GetSelectList(this IEFRepository repository, string typeName)
{
    var vehicle = repository.TypeTypes.FirstOrDefault(t => t.Name.ToUpper() == typeName);
    if (vehicle != null)
    {
        var carList = vehicle.SubTypes.ToList().OrderBy(s => s.Name);
        var selectList = new SelectList(subTypeList, "SubTypeID", "Name");

        return selectList;
    }
}

Вот код, который я использую для создания раскрывающегося списка:

<div class="editor-field">
    @Html.DropDownListFor(model => model.CarID,
        new SelectList(ViewBag.Cars, "Value", "Text", "1"))
    @Html.ValidationMessageFor(model => model.CarShortName)
</div>

Вот результат:

<select id="CarID" name="CarID" data-val="true" data-val-number="The field CarID must be a number." data-val-required="The CarID field is required.">
    <option value="2">Boxster</option>
    <option value="3">Cortina</option>
    <option selected="selected" value="1">Viper</option>
</select>
16
задан Ciaran Bruen 16 September 2013 в 07:58
поделиться