2012-05-09 19 views
46

Her iki modelde de bir boolean özelliğinin değerini yansıtan, karşılıklı olarak özel radyo düğmeleri için doğru Razor sözdizimini bulmaya çalışıyorum. Benim modelim bu vardır:MVC4: Tek bir boolean model özelliği için iki radyo düğmesi

public bool IsFemale{ get; set; } 

Ben "Bayan", iki radyo düğmeleri ile bir "Erkek" ve diğer bu görüntülemek istediğiniz ama şimdiye kadar denedim her şey gerçek değerini yansıyan henüz Modelin IsFemale özelliği.

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

Bu benim değiştirmek ve güncelleme eğer Değeri doğru devam gibi görünüyor, ama kontrol olarak doğru değeri işaretlemez: Şu anda, bu var. Eminim bu aptalca bir şey ama eminim. Böyle

+0

uygulamanızın kültür nedir? Yerelleştirilmiş .net kullanıyor musunuz? Sorununuzu tekrarlayamadığım için ve Darin'in çözümü işe yaradığı için belki de bu bazı kültür ayarı sorunudur ... – nemesv

+0

Şu anda kültürü ayarlamıyorum, bu yüzden makinenin varsayılan değerini kullandığını farz ediyorum. –

+0

İlginç ... Bu sadece garip çünkü ben de çalıştığım gibi çalışmayı beklerdim. Aslında bu benim reproda ... – nemesv

cevap

87

Dene:

Modeli:

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

Denetleyici:

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

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

Görünüm:

burada

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

Ve tam kodBu da etiket yardımcıları ile elde edilebilir MVC 6 (ASP.NET Çekirdek) olarak

@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

Evet, işe yarıyor. RadioButtonFor için aşırı yük, 'object value' olarak parametreyi belirttiğinden, bu bana karşı tamamen sezgisel görünüyor. Çok teşekkürler! –

+0

Harika Yanıt. Etiketin tıklanması için de çalışıyor. Benim durumumda –

+0

yanlıştır ve eğer değiştirmek için radyoya tıklama yapmazsam gönderim doğrudur. @ Html.RadioButtonFor (m => m.IsWorkDefaultAdresi, "true", new {id = "default-work"}) @ Html.RadioButtonFor (m => m.IsWorkDefaultAdresi, "false", yeni {id = "varsayılan-ev"}) – Adeem

0

:

<label> 
    <input type="radio" asp-for="IsFemale" value="false" /> Male 
</label> 
<label> 
    <input type="radio" asp-for="IsFemale" value="true" /> Female 
</label>