Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 如何在asp.net mvc 3中创建强类型radiobuttonlist?_Asp.net Mvc 3_C# 4.0 - Fatal编程技术网

Asp.net mvc 3 如何在asp.net mvc 3中创建强类型radiobuttonlist?

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

我正在尝试创建一个强类型radiobuttonlist。我不知道如何从HtmlExtensionClass中的ModelMetaData中获取操作列表?操作列表通过索引操作中的MyViewmodel传入

助手c类#


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());
    }
}