62

モデルのブールプロパティの値を両方とも反映する、相互に排他的なラジオボタンの正しいRazor構文を見つけようとしています。私のモデルにはこれがあります:

public bool IsFemale{ get; set; }

これを「男性」と「女性」の2つのラジオボタンで表示したいのですが、これまでに試したすべてのことはIsFemale、モデルのプロパティの実際の値を反映していません。現在、私はこれを持っています:

@Html.RadioButtonFor(model => model.IsFemale, !Model.IsFemale) Male
@Html.RadioButtonFor(model => model.IsFemale, Model.IsFemale) Female

これは、変更して更新した場合に値を正しく保持しているように見えますが、正しい値をチェック済みとしてマークしていません。これはばかげていると思いますが、行き詰まっています。

4

2 に答える 2

115

このようにしてみてください:

@Html.RadioButtonFor(model => model.IsFemale, "false") Male
@Html.RadioButtonFor(model => model.IsFemale, "true") Female

そして、ここに完全なコードがあります:

モデル:

public class MyViewModel
{
    public bool IsFemale { get; set; }
}

コントローラ:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel
        {
            IsFemale = true
        });
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        return Content("IsFemale: " + model.IsFemale);
    }
}

意見:

@model MyViewModel

@using (Html.BeginForm())
{
    @Html.RadioButtonFor(model => model.IsFemale, "false", new { id = "male" }) 
    @Html.Label("male", "Male")

    @Html.RadioButtonFor(model => model.IsFemale, "true", new { id = "female" })
    @Html.Label("female", "Female")
    <button type="submit">OK</button>
}
于 2012-05-09T14:47:42.273 に答える