これが私がやった方法です。
ビュー モデルは次のようになり、カードのリストが表示されます。
public class CardViewModel
{
public int CardId { get; set; }
public IEnumerable<Card> Cards { get; set; }
}
あなたのカードがどのような特性を持っているかはわかりませんが、独自のものを考えさせてください:
public class Card
{
public int Id { get; set; }
public string Name { get; set; }
}
ビューは次のビュー モデルを受け入れます。
@model YourProject.ViewModels.Cards.CardViewModel
カード ドロップダウン リストの HTML マークアップ:
@Html.DropDownListFor(
x => x.CardId,
new SelectList(Model.Cards, "Id", "Name", Model.CardId),
"-- Select --",
new { id = "Cards" }
)
@Html.ValidationMessageFor(x => x.CardId)
ビューが初めて読み込まれたときのアクション メソッド:
public ActionResult YourActionMethod()
{
CardViewModel viewModel = new CardViewModel
{
Cards = cardService.FindAll()
}
return View(viewModel);
}
[HttpPost]
public ActionResult YourActionMethod(CardViewModel viewModel)
{
if (!ModelState.IsValid)
{
return View(viewModel);
}
// Do what ever you need to do. The selected card's id will now be populated
return RedirectToAction("List");
}
JavaScript に関する質問については、新しい質問を開始することをお勧めしますが、注意すべき点について概要を説明します。on change イベントを追加して JavaScript と HTML を分離しますjQuery
(好きなものを使用してください)。例えば:
<script>
$(document).ready(function () {
$("#Cards").change(function () {
alert('cards value has changed');
});
});
</script>
これが役立つことを願っています。