gpt4 book ai didi

asp.net-mvc-3 - ASp.NET MVC 3.0 调用通用扩展 html 帮助器方法时出错

转载 作者:行者123 更新时间:2023-12-02 18:46:33 26 4
gpt4 key购买 nike

我有一个这样的扩展方法:

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 上调用此方法(自动完成该方法的工作,它在 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 block 缺少结束字符“}”。确保此 block 中的所有“{”字符都有匹配的“}”字符,并且没有任何“}”字符被解释为标记。'

<MyEnum>由于某种原因解释为 html 标签(收到警告:警告 1 “MyEnum”元素未关闭。所有元素必须是自关闭的或具有匹配的结束标签。),我也可以在这种情况下,不会导航到我的扩展方法,但如果我删除 @从声明( Html.GetEnumValue<MyEnum>(thing.Id) )我可以导航我的方法

最佳答案

通常 HTML 帮助程序应返回字符串或 IHtmlString因为这就是它们的用途(生成您在 View 中重复使用的简短 HTML 片段)。

所以也许你想要这个:

public static IHtmlString GetEnumValue<T>(this HtmlHelper helper, int value) where T : struct, IConvertible
{
return MvcHtmlString.Create(EnumHelper<T>.GetEnumValue(value).ToString());
}

然后在您看来,您将能够像这样调用它(请注意,如果您想使用泛型,则可能需要将其括在括号中,因为 <> 被 Razor 视为特殊字符解析器):

@(Html.GetEnumValue<MyEnumHere>(1))

关于asp.net-mvc-3 - ASp.NET MVC 3.0 调用通用扩展 html 帮助器方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com