<select name="CityId"> 的 name 屬性必須與 Model/Action 參數名稱一致,<option value="1"> 的值會自動繫結。
@model MyApp.Models.OrderViewModel
<select name="CityId" class="form-control">
@foreach (var c in ViewBag.Cities) {
<option value="@c.Id" @(Model.CityId == c.Id ? "selected" : "")>@c.Name</option>
}
</select>
[HttpPost]
public ActionResult Create(OrderViewModel vm) {
// vm.CityId 自動獲得選中的 value
int cityId = vm.CityId;
...
}
@Html.DropDownListFor(m => m.CityId,
new SelectList(ViewBag.Cities, "Id", "Name"),
"-- 請選擇 --",
new { @class = "form-control" })
selected、id/name、驗證訊息綁定。Enum 直接綁定。name 屬性 → 模型繫結失效。value 型別不符 (string vs int) → 繫結為 0/null。