2012-05-09 9 views
46

私のモデルのブール値プロパティの値を反映する相互排他的なラジオボタンの正しいRazor構文を探しています。私のモデルはこれを持っている:MVC4:1つのブールモデルのプロパティ用の2つのラジオボタン

public bool IsFemale{ get; set; } 

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

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

これは私が変更と更新正しく値を永続化するようだが、チェックして正しい値をマークしません:現在、私は、これは持っています。私はこれが何かばかだと確信していますが、私は立ち往生しています。

+0

、アプリの文化とは何ですか?ローカライズされた.netを使用していますか?あなたの問題を再現することはできませんし、Darinの解決策が多分働いていたかもしれないので、これはいくつかの文化設定問題です... – nemesv

+0

私は現在文化を設定していないので、マシンのデフォルトを使用していると仮定します。 –

+0

興味深い...実際には私のレトロでやってみたように、私はそれが動作すると期待しているので、それはちょうど奇妙です... – nemesv

答えて

87

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

@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); 
    } 
} 

ビュー:

これはまた、タグヘルパーを用いて達成することができるMVC 6(ASP.NETコア)で
@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> 
} 
+1

うん、それは動作します。 'RadioButtonFor'のオーバーロードは、そのパラメータを' object value'として指定するので、私にとっては直感に反するようです。どうもありがとう! –

+0

すばらしい答え。ラベルをクリックしても動作します。私の場合、デフォルトでは –

+0

がfalseで、送信時に変更するラジオをクリックしないと、真になります。 @ Html.RadioButtonFor(m => m.IsWorkDefaultAddress、 "true"、new {id = "default-work"}) @ Html.RadioButtonFor(m => m.IsWorkDefaultAddress、 "default-home"}) – Adeem

0

<label> 
    <input type="radio" asp-for="IsFemale" value="false" /> Male 
</label> 
<label> 
    <input type="radio" asp-for="IsFemale" value="true" /> Female 
</label> 
関連する問題