इम में कस्टम HtmlHelper एक और stackoverflow सवाल से कोड का एक टुकड़ा का उपयोग कर:एक प्रदर्शन के साथ [प्रदर्शन (नाम = "एक्स")] का उपयोग करना। MVC3 ASP.Net
namespace MvcHtmlHelpers
{
public static class htmlHelpers
{
/// <summary>
/// Radio button for : Adapted to support enum labels from display attributes
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <typeparam name="TProperty"></typeparam>
/// <param name="htmlHelper"></param>
/// <param name="expression"></param>
/// <returns></returns>
public static MvcHtmlString RadioButtonForEnum<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression
)
{
var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var names = Enum.GetNames(metaData.ModelType);
var sb = new StringBuilder();
foreach (var name in names)
{
var id = string.Format(
"{0}_{1}_{2}",
htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix,
metaData.PropertyName,
name
);
var radio = htmlHelper.RadioButtonFor(expression, name, new { id = id }).ToHtmlString();
sb.AppendFormat(
"<label for=\"{0}\">{1}</label> {2}",
id,
HttpUtility.HtmlEncode(name),
radio
);
}
return MvcHtmlString.Create(sb.ToString());
}
}
}
ओर मेरे वर्तमान enum
साथ:
public enum Options
{
[Display(Name ="Yes")]
0,
[Display(Name = "No")]
1,
[Display(Name = "Other")]
2,
}
अगर मैं तो @html.RadioButtonForEnum(...)
का उपयोग यह साथ मेरे enums प्रदर्शित करता है उचित बॉक्स में कोई समस्या नहीं है। हालांकि, मैं चाहता हूं कि वे लेबल मान [Display(Name = "<text>")]
का उपयोग करें ताकि वे अधिक समझ सकें! - यानी सिर्फ 0,1,2 नहीं।
यह एक का इलाज काम करता है, दुर्भाग्यवश मुझे अब एक ऑटो चयनित मूल्य नहीं मिल रहा है: '@ एचटीएमएल। रैडियोबटन फोरएनम (एम => एम। ऑप्शन)' – JustAnotherDeveloper
@RawryLions, ठीक है, मैंने इसे ठीक करने के लिए अपना जवाब अपडेट कर दिया है। यह अब उम्मीद के रूप में काम करना चाहिए। –
शानदार सामान, मदद के लिए धन्यवाद। अब मैं इसे अन्य रूप तत्वों के लिए enum बनाने के लिए आधार के रूप में उपयोग कर सकते हैं :) – JustAnotherDeveloper