您的位置:首页 > 其它

three ways creating custom helpers to show RadioButtonList in MVC

2013-03-03 01:39 417 查看
first way is using the extension method to build the helper:

public class ListOption
{
public string Text { get; set; }
public object Value { get; set; }
}

public static class CustomHelperExtensions
{
public static MvcHtmlString RadioButtonList(this HtmlHelper helper, string name, object selectedValue, params ListOption[] options)
{
int i = 0;

StringBuilder builder = new StringBuilder();

foreach (var option in options)
{
bool isChecked = selectedValue == null ? false : selectedValue.ToString() == option.Value.ToString();
var controlId = name + i;
var mvcString = helper.RadioButton(name, option.Value, isChecked, new { id = controlId });

builder.AppendLine(mvcString.ToHtmlString());

TagBuilder tag = new TagBuilder("label");
tag.MergeAttribute("for", controlId);
tag.InnerHtml = option.Text;

builder.AppendLine(tag.ToString());

i++;
}

return MvcHtmlString.Create(builder.ToString());
}

public static MvcHtmlString RadioButtonList(this HtmlHelper helper, string name, object selectedValue, params string[] options)
{
var newOptions = new List<ListOption>();

foreach (var option in options)
{
newOptions.Add(new ListOption { Text = option, Value = option });
}

return helper.RadioButtonList(name, selectedValue, newOptions.ToArray());
}

public static MvcHtmlString YesNoRadioButtonList(this HtmlHelper helper, string name, object selectedValue)
{
return helper.RadioButtonList(name, selectedValue, "Yes", "No");
}
}


second way is building helpers in current view page:

@helper RadioButtonList(string name, object selectedValue, params ListOption[] options)
{
int i = 0;

foreach (var option in options)
{
bool isChecked = selectedValue == null? false : selectedValue.ToString() == option.Value.ToString();
string id = name + i;
@Html.RadioButton(name, option.Value, isChecked, new { id = id })
<label for="@id"> @option.Text</label>
i++;
}
}

@helper RadioButtonList(string name, object selectedValue, params string[] options)
{
var newOptions = new List<ListOption>();

foreach (var option in options)
{
newOptions.Add(new ListOption { Text = option, Value = option });
}

@RadioButtonList(name, selectedValue, newOptions.ToArray());
}

@helper YesNoRadioButtonList(string name, object selectedValue)
{
@RadioButtonList(name, selectedValue, "Yes", "No");
}


the third way is building helpers in a view under App_Code folder:

@using MVC = System.Web.Mvc;
@using System.Web.Mvc.Html;
@using MvcApplication8.Models;

@helper RadioButtonList(MVC.HtmlHelper htmlHelper, string name, object selectedValue, params ListOption[] options)
{
int i = 0;

foreach (var option in options)
{
bool isChecked = selectedValue == null ? false : selectedValue.ToString() == option.Value.ToString();
string id = name + i;
@htmlHelper.RadioButton(name, option.Value, isChecked, new { id = id })
<label for="@id">@option.Text</label>
i++;
}
}

@helper RadioButtonList(MVC.HtmlHelper htmlHelper, string name, object selectedValue, params string[] options)
{
var newOptions = new List<ListOption>();

foreach (var option in options)
{
newOptions.Add(new ListOption { Text = option, Value = option });
}

@RadioButtonList(htmlHelper, name, selectedValue, newOptions.ToArray());
}

@helper YesNoRadioButtonList(MVC.HtmlHelper htmlHelper, string name, object selectedValue)
{
@RadioButtonList(htmlHelper, name, selectedValue, "Yes", "No");
}


how to use these helpers:

@YesNoRadioButtonList("myo1", "")
<br />
@RadioButtonList("myo2", "", new ListOption[] { new ListOption { Text = "Yes", Value = 1 }, new ListOption { Text = "No", Value = 2 } })
<br />
@RadioButtonList("myo3", "", "A", "B", "C", "D")
<hr />
<br/>
@Html.YesNoRadioButtonList("myo4", "")
<br />
@Html.RadioButtonList("myo5", "", new ListOption[] { new ListOption { Text = "Yes", Value = 1 }, new ListOption { Text = "No", Value = 2 } })
<br />
@Html.RadioButtonList("myo6", "", "A", "B", "C", "D")
<hr />
<br/>
@CustomHelpers.YesNoRadioButtonList(Html,"myo7", "")
<br />
@CustomHelpers.RadioButtonList(Html, "myo8", "", new ListOption[] { new ListOption { Text = "Yes", Value = 1 }, new ListOption { Text = "No", Value = 2 } })
<br />
@CustomHelpers.RadioButtonList(Html, "myo9", "", "A", "B", "C", "D")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: