列挙型があるとしましょう:
public enum OrderStatusType
{
Waiting = 0,
Pending,
Picked,
Shipped,
}
以下のようにラジオボタンリストを生成しました。
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Shipped, new {@checked = true})
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Waiting)
ただし、待機は常に選択されています。出力HTMLは次のとおりです。
input type="radio" value="Shipped" name="Status" id="Status" checked="True"
input type="radio" value="Waiting" name="Status" id="Status" checked="checked"
「checked」属性がMVCフレームワークによって自動的に追加されるのはなぜですか?ありがとう。
モデル:
public class OrderViewModel
{
public OrderStatusType Status { get; set; }
}
景色:
@using WebApplication17.Controllers
@model WebApplication17.Models.OrderViewModel
@{
ViewBag.Title = "Home Page";
}
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Picked)
<span>@OrderStatusType.Picked</span>
@Html.RadioButtonFor(m=>m.Status, OrderStatusType.Pending)
<span>@OrderStatusType.Pending</span>
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Shipped, new {@checked = true})
<span>@OrderStatusType.Shipped</span>
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Waiting)
<span>@OrderStatusType.Waiting</span>
これは、プロパティStatus
の値が_OrderStausType.Waiting
_であるために選択されました(バインディングが機能する方法です!)。
ビューに渡す前に、@Html.RadioButtonFor()
メソッドから_new {@checked = true}
_を削除し、コントローラーでStatus
の値を_OrderStausType.Shipped
_に設定します。
また、ラベルをラジオボタンに関連付けるには、_<label>
_ではなく_<span>
_要素を使用する必要があります。
_@Html.RadioButtonFor(m => m.Status, OrderStausType.Picked, new {id = OrderStausType.Picked)
<label [email protected]>@OrderStausType.Picked</label>
_