2010-02-08 12 views
8

numaralı radyo düğmelerinin bir listesini almak için Html.RadioButtonFor'a enum nasıl geçilir Aşağıdaki satırı kullanarak MVC 2 RC 2'de (C#) bir radyo düğmesi listesi oluşturmaya çalışıyorum:MVC 2 RC 2, C#

<%= Html.RadioButtonFor(model => Enum.GetNames(typeof(DataCarry.ProtocolEnum)), 
         null) %> 

ama sadece zamanında bana şu istisna veriyor:

şablonlar sadece saha erişimi, mülkiyet erişimi, tek boyutlu dizi indeksi veya tek parametreli özel dizin ifadeleriyle kullanılabilir.

Bu mümkün mü, eğer öyleyse, nasıl, lütfen?

<%= Html.DropDownList(string.Empty, Enum.GetNames(Model.GetType()).ToList().ConvertAll(e => new SelectListItem() { Text = e.ToString(), Value = e , Selected = e.Equals(Model.ToString())})) %> 

Bu sadece sıralar:

cevap

6

Sen /Views/Shared/EditorTemplates/Enum.ascx

yılında "Enum" adlı bir şablon aşağıdaki içerikle

oluşturabilir GetValues deneyin enum değerleri. seçilen listenin bir nesil ana parçasıdır -

Sen DropDownList dan değiştirebilirsiniz Tabii

Html.EditorFor(m => m.YourEnumProperty, "Enum" /*The name of the template*/) 
+0

ile bu çağırabilirsiniz. :-) – amarsuperstar

+1

Html.RadioButtonFor'da eşdeğer bir yöntem göremiyorum. Yardımcı yöntem sadece bir değer alır gibi görünüyor. OP'nin sorduğu bir alternatif var mı? –

+0

-1 'RadioButton' ve' RadioButtonFor' 'SelectListItem's’i almaz. – Stijn