У меня есть список элементов в раскрывающемся списке в представлении Razor. В базе данных каждый элемент имеет 3 связанных с ним значения - идентификатор базы данных, короткое имя (для отображения) и длинное имя (для передачи в службу). В раскрывающемся списке должно отображаться короткое имя, поэтому я заполняю раскрывающийся список идентификатором базы данных в качестве значения и коротким именем в качестве текста.
Однако, когда пользователь выбирает элемент, мне нужно передать длинное имя в качестве параметра запроса в службу поиска с помощью jQuery, например, когда Cortina выбрана, «Ford Cortina 1979 Blue» необходимо передать службе. Моя первая мысль - сохранить длинное имя в качестве атрибута тире данных, но мне интересно, есть ли лучший способ. Так
- Как сохранить все 3 значения в раскрывающемся списке?
- Если я использую атрибуты тире данных, как мне включить все значения LONG_NAME в Html.DropDownListFor или как-то добавить их в раскрывающийся список?
DB:
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>
DropDownListFor
- это своего рода забытый пасынок в рамках. - person Travis J   schedule 02.07.2012