Asp.net mvc 3 如何在asp.net mvc 3中创建强类型radiobuttonlist?
我正在尝试创建一个强类型radiobuttonlist。我不知道如何从HtmlExtensionClass中的ModelMetaData中获取操作列表?操作列表通过索引操作中的MyViewmodel传入 助手c类#Asp.net mvc 3 如何在asp.net mvc 3中创建强类型radiobuttonlist?,asp.net-mvc-3,c#-4.0,Asp.net Mvc 3,C# 4.0,我正在尝试创建一个强类型radiobuttonlist。我不知道如何从HtmlExtensionClass中的ModelMetaData中获取操作列表?操作列表通过索引操作中的MyViewmodel传入 助手c类# actions属性是PageAction的列表。因此,您可以强制帮助器将lambda表达式作为参数,该表达式返回此自定义类型的列表,以便在帮助器中您可以访问操作和用户属性: public static class HtmlExtensions { public static
actions属性是
PageAction
的列表。因此,您可以强制帮助器将lambda表达式作为参数,该表达式返回此自定义类型的列表,以便在帮助器中您可以访问操作
和用户
属性:
public static class HtmlExtensions
{
public static MvcHtmlString RadioButtonForList<TModel>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, IEnumerable<PageAction>>> expression
)
{
var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var actions = metaData.Model as IEnumerable<PageAction>;
var sb = new StringBuilder();
foreach (var pageAction in actions)
{
var id = string.Format(
"{0}_{1}_{2}",
htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix,
metaData.PropertyName,
pageAction.action
);
var radio = htmlHelper.RadioButtonFor(expression, pageAction.action, new { id = id }).ToHtmlString();
sb.AppendFormat(
"<label for=\"{0}\">{1}</label> {2}",
id,
HttpUtility.HtmlEncode(pageAction.action),
radio
);
}
return MvcHtmlString.Create(sb.ToString());
}
}
public静态类
{
公共静态MvcHtmlString RadioButtonForList(
这个HtmlHelper HtmlHelper,
表情
)
{
var metaData=modelmetada.FromLambdaExpression(表达式,htmlHelper.ViewData);
var actions=metaData.Model为IEnumerable;
var sb=新的StringBuilder();
foreach(var pageAction in actions)
{
var id=string.Format(
"{0}_{1}_{2}",
htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix,
metaData.PropertyName,
动作
);
var radio=htmlhelp.RadioButtonFor(表达式,pageAction.action,new{id=id}).ToHtmlString();
附文格式(
"{1} {2}",
身份证件
HttpUtility.HtmlEncode(pageAction.action),
收音机
);
}
返回MvcHtmlString.Create(sb.ToString());
}
}
操作属性是PageAction
的列表。因此,您可以强制帮助器将lambda表达式作为参数,该表达式返回此自定义类型的列表,以便在帮助器中您可以访问操作
和用户
属性:
public static class HtmlExtensions
{
public static MvcHtmlString RadioButtonForList<TModel>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, IEnumerable<PageAction>>> expression
)
{
var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var actions = metaData.Model as IEnumerable<PageAction>;
var sb = new StringBuilder();
foreach (var pageAction in actions)
{
var id = string.Format(
"{0}_{1}_{2}",
htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix,
metaData.PropertyName,
pageAction.action
);
var radio = htmlHelper.RadioButtonFor(expression, pageAction.action, new { id = id }).ToHtmlString();
sb.AppendFormat(
"<label for=\"{0}\">{1}</label> {2}",
id,
HttpUtility.HtmlEncode(pageAction.action),
radio
);
}
return MvcHtmlString.Create(sb.ToString());
}
}
public静态类
{
公共静态MvcHtmlString RadioButtonForList(
这个HtmlHelper HtmlHelper,
表情
)
{
var metaData=modelmetada.FromLambdaExpression(表达式,htmlHelper.ViewData);
var actions=metaData.Model为IEnumerable;
var sb=新的StringBuilder();
foreach(var pageAction in actions)
{
var id=string.Format(
"{0}_{1}_{2}",
htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix,
metaData.PropertyName,
动作
);
var radio=htmlhelp.RadioButtonFor(表达式,pageAction.action,new{id=id}).ToHtmlString();
附文格式(
"{1} {2}",
身份证件
HttpUtility.HtmlEncode(pageAction.action),
收音机
);
}
返回MvcHtmlString.Create(sb.ToString());
}
}
@model radioButtonlist.Models.MyViewModel
@using radioButtonlist.Models;
@using (Html.BeginForm())
{
@Html.RadioButtonForList(x => x.actions)
}
public static class HtmlExtensions
{
public static MvcHtmlString RadioButtonForList<TModel>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, IEnumerable<PageAction>>> expression
)
{
var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var actions = metaData.Model as IEnumerable<PageAction>;
var sb = new StringBuilder();
foreach (var pageAction in actions)
{
var id = string.Format(
"{0}_{1}_{2}",
htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix,
metaData.PropertyName,
pageAction.action
);
var radio = htmlHelper.RadioButtonFor(expression, pageAction.action, new { id = id }).ToHtmlString();
sb.AppendFormat(
"<label for=\"{0}\">{1}</label> {2}",
id,
HttpUtility.HtmlEncode(pageAction.action),
radio
);
}
return MvcHtmlString.Create(sb.ToString());
}
}