gpt4 book ai didi

asp.net-mvc - 从 Razor 声明性 View 使用 MVC HtmlHelper 扩展

转载 作者:行者123 更新时间:2023-12-02 12:57:24 25 4
gpt4 key购买 nike

我尝试在 App_Code 文件夹中为 MVC 3 RTM 项目创建 Razor 声明式帮助程序。

我遇到的问题是 MVC HtmlHelper 扩展(如 ActionLink)不可用。这是因为编译的助手派生自 System.Web.WebPages.HelperPage ,尽管它暴露了 Html属性,其类型为 System.Web.WebPages.HtmlHelper而不是System.Web.Mvc.HtmlHelper .

我遇到的错误类型的一个例子是:

'System.Web.Mvc.HtmlHelper' does not contain a definition for 'ActionLink' and no extension method 'ActionLink' accepting a first argument of type 'System.Web.Mvc.HtmlHelper' could be found (are you missing a using directive or an assembly reference?)

我唯一的解决方案是创建自己的 HelperPage 并覆盖 Html 属性:

using System.Web.WebPages;

public class HelperPage : System.Web.WebPages.HelperPage
{
// Workaround - exposes the MVC HtmlHelper instead of the normal helper
public static new HtmlHelper Html
{
get { return ((System.Web.Mvc.WebViewPage) WebPageContext.Current.Page).Html; }
}
}

然后我必须在每个助手的顶部编写以下内容:

@inherits FunnelWeb.Web.App_Code.HelperPage
@using System.Web.Mvc
@using System.Web.Mvc.Html

@helper DoSomething()
{
@Html.ActionLink("Index", "Home")
}

在 MVC 3 中这是否意味着如此困难,还是我做错了什么?

最佳答案

看看Marcind's answer对于这个问题。您遇到的问题是将声明性 View 放入 App_Code 文件夹中时受到限制。

Putting your helpers in App_Code works but has certain limitations that impact certain MVC scenarios (for example: no access to standard MVC Html. helpers)

关于asp.net-mvc - 从 Razor 声明性 View 使用 MVC HtmlHelper 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4710853/

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