У меня есть такой метод расширения:
namespace System.Web.Mvc.Html
{
public static class HtmlExtensions
{
public static T GetEnumValue<T>(this HtmlHelper helper, int value) where T : struct, IConvertible
{
return EnumHelper<T>.GetEnumValue(value);
}
}
}
Затем я вызываю этот метод в Razor View ( автозаполнение для этого метода работает, это видно в представлении ), но я получаю ошибку:
@Html.GetEnumValue<MyEnumHere>(1) //Getting error here
ошибка: Cannot convert method group 'GetEnumValue' to non-delegate type 'object'. Did you intend to invoke the method?
Если я пойду так - без ошибок во время компиляции:
Html.GetEnumValue<MyEnumHere>(1) //but in that case didnt get data to display.
Также не получаю ошибки во время компиляции, если ложь что
@{
Html.GetEnumValue<MyEnum>(1); //But then I am getting error during execution
}
ошибка: No overload for method 'Write' takes 0 arguments
Есть предложения?
Обновление 0.1 :
Получите это так:
var value = Html.GetEnumValue<MyEnum>(1);
@value
все еще вопрос, почему в этом случае это не работает:
@Html.GetEnumValue<MyEnumHere>(1)
Обновление 0,2
после того, как я обновил свой метод расширения, чтобы он возвратил IHtmlStirng
, но он все еще не заработал:
@using MyTypes.Enumerators
@inherits MvcContrib.FluentHtml.ModelWebViewPage<MyModel>
@foreach (var thing in Model.Stuff)
{
@Html.GetEnumValue<MyEnum>(thing.Id)
}
ошибка при выполнении :
'В блоке foreach отсутствует закрывающий символ "}". Убедитесь, что у вас есть соответствующий символ "}" для всех символов "{" в этом блоке, и что ни один из символов "}" не интерпретируется как разметка. '
<MyEnum>
по какой-то причине интерпретируется как тег html (получение предупреждения: Предупреждение 1 Элемент "MyEnum" не был закрыт. Все элементы должны быть либо самозакрывающимися, либо иметь соответствующий конечный тег. ) а также я не могу перейти к своему методу расширения в этом случае, но если я удаляю @
из объявления (Html.GetEnumValue<MyEnum>(thing.Id)
), чем я могу перемещаться по моему методу