使用Viewbag数据与HTMLHelper MVC3.-无法动态调度

本文关键字:动态调度 MVC3 HTMLHelper Viewbag 数据 使用 | 更新日期: 2023-09-27 18:20:28

我正在使用以下函数将枚举转换为radiobuttons 的集合

public static MvcHtmlString RadioButtonForEnum<TModel, TProperty>(
    this HtmlHelper<TModel> htmlHelper,
    Expression<Func<TModel, TProperty>> expression
)
{

然而,这意味着我必须使用类似html.RadioButtonForEnum(a => a.inputEnum)的东西来使用它,其中a是我的页面模型。

当我想做以下事情时,我的问题就出现了:html.RadioButtonForEnum(Viewbag.inputEnum)

我得到以下错误:

CCS1973: 'System.Web.Mvc.HtmlHelper<MyProject.Models.MyModel>' has no applicable method named 'RadioButtonForEnum' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.

我试图对它应用强制转换,但如果枚举是通过Viewbag而不是页面模型传入的,似乎无法加载它。

使用Viewbag数据与HTMLHelper MVC3.-无法动态调度

描述

您可以使用enumType作为参数而不是表达式来创建第二个方法。

样品

public static MvcHtmlString RadioButtonForEnum<TModel, TProperty>(
    this HtmlHelper<TModel> htmlHelper,
    TypeOfYourEnum value
)

更多信息

  • ASP.NET MVC-创建自定义HTML帮助程序(C#)

我有两个解决方案:

创建一个接受枚举而不是表达式的函数:

public static MvcHtmlString RadioButtonForEnum(this HtmlHelper htmlHelper, MyEnumType enum)
{
  //Code to generate radio button here
}

选项2是创建一个局部视图(可能是过度终止)。