Использование данных Viewbag с HTMLHelper MVC3.- Не может быть отправлено динамически - PullRequest
1 голос
/ 17 января 2012

Я использую следующую функцию, чтобы превратить мои перечисления в коллекцию 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 вместо модели страницы.

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Описание

Вы можете создать второй метод, указав в качестве параметра enumType вместо выражения.

Пример

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

Дополнительная информация

0 голосов
/ 17 января 2012

У вас есть 2 решения, которые я могу предложить:

Создайте функцию, которая принимает перечисление, а не выражение:

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

Вариант 2 - создать частичное представление (может быть перебор).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...