選択したオプションのパラメーターをコントローラーに送信する方法を教えてください。これが私の見解です:
<select>
@foreach(var item in Model.City)
{
<option>@Html.DisplayFor(x => item.Name)</option>
}
</select>
選択したオプションのパラメーターをコントローラーに送信する方法を教えてください。これが私の見解です:
<select>
@foreach(var item in Model.City)
{
<option>@Html.DisplayFor(x => item.Name)</option>
}
</select>
したがって、あなたの見解では、次のようになります。
@model MyModel
@using(Html.BeginForm()) {
<select id="City" name="City">
@foreach(var c in Model.City)
{
<option value="@c.Id">@c.Name</option>
}
</select>
<input type="submit" value="Post data to controller" />
}
コントローラーでは、同じ名前で署名が異なるアクションを作成するだけです。
また:
[HttpPost]
public ActionResult Edit(string City) { ... }
または、モデル全体を渡すことができます
[HttpPost]
public ActionResult Edit(MyModel model) {
string city = model.City;
}
しかし、そのような質問がある場合は、ASP.NET の公式 Web サイトにある PluralSight の無料の ASP.NET コースに時間を費やすことをお勧めします。
無料で利用できるコース:
コースは各ページの右側のサイドバーにあります
そしてスコット・ハンセルマンから:
フォーム html ヘルパーが欠落しているようです。これを試してください (別の ActionResult を指定する必要がある場合は、BeginForm ヘルパーで読み取られる Controller/Index アクションに行くことを前提としています):
@using (Html.BeginForm())
<select>
@foreach(var item in Model.City)
{
<option>@Html.DisplayFor(x => item.Name)</option>
}
</select>
<br />
<input type="submit" value="Search" />
}
Model.City を繰り返すのではなく、Html.DropDownList のような別の Html ヘルパーを調べる必要があります。