Razor ビュー内のドロップダウン リストに項目のリストがあります。データベースでは、各項目に 3 つの値が関連付けられています。データベース ID、短い名前 (表示用)、長い名前 (サービスに渡すため) です。ドロップダウンには短い名前を表示する必要があるため、データベース ID を値として、短い名前をテキストとしてドロップダウンに入力しています。
ただし、ユーザーがアイテムを選択するとき、長い名前をクエリ パラメータとして 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>