相关疑难解决方法(0)

使用Razor声明性视图中的MVC HtmlHelper扩展

我试图在我的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'不包含'ActionLink'的定义,也没有扩展方法'ActionLink'接受类型为'System.Web.Mvc.HtmlHelper'的第一个参数'(你是否缺少using指令)或汇编参考?)

我唯一的解决方案是创建自己的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; }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

@helper DoSomething()
{
    @Html.ActionLink("Index", "Home")
}
Run Code Online (Sandbox Code Playgroud)

它是否意味着在MVC 3中这么难,或者我做错了什么?

asp.net-mvc razor asp.net-mvc-3

121
推荐指数
5
解决办法
7万
查看次数

Razor Views没有看到System.Web.Mvc.HtmlHelper

我正在升级到MVC4.我已按照http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253806上的说明操作,但在我的Razor视图和布局中,我有类似的错误

  • 'System.Web.WebPages.Html.HtmlHelper'不包含'BeginRouteForm'的定义,并且没有扩展方法'BeginRouteForm'接受类型'System.Web.WebPages.Html.HtmlHelper'的第一个参数可以找到(你是吗?)缺少using指令或程序集引用?)

我也有错误,如:

  • "当前背景下不存在'Viewbag'这​​个名称

当我将鼠标悬停在@Html上时,我可以看到它的类型是System.Web.WebPages.Html.HtmlHelper而不是System.Web.Mvc.HtmlHelper

不确定其他信息是否相关,但这就是我所处的位置:

  • 我还没有在sln到.net 4.5中更新类库等.
  • 该项目是在VS2010中创建的,但我正在VS2012中进行迁移
  • 该项目打开并运行VS2012,.Net 4.0,MVC 3

任何指针赞赏.

编辑: web.config中的所有引用和文件都升级为:

  • System.Web.Mvc,Version = 4.0.0.0
  • System.Web.WebPages,Version = 2.0.0.0
  • System.Web.Helpers,Version = 2.0.0.0
  • System.Web.WebPages.Razor,Version = 2.0.0.0

编辑(2): 在我的/views/web.config(或/views/shared/web.config,如果我在下面尝试@Paul的解决方案)中,我有自己的基类型,它继承自System.Web. Mvc.WebViewPage,包含库中的引用已更新为MVC4并转到定义带我到MVC4 dll.

新版本在这方面有什么变化吗?我在发行说明中看不到任何相关内容.

c# razor asp.net-mvc-4

70
推荐指数
5
解决办法
9万
查看次数

找不到Html Helper Extensions

我正在使用ASP.net MVC的发布版本,我似乎得到了很多这个错误

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

这很奇怪,因为我可以浏览到System.Web.Mvc.HtmlHelper并且所有扩展方法都在那里.更奇怪的是我可以编译并且所有错误都消失了,但是一旦我再次开始编辑它们就会显示出来.我包括在内

<%@ Import Namespace="System.Web.Mvc" %>
<%@ Import Namespace="System.Web.Mvc.Html" %>
Run Code Online (Sandbox Code Playgroud)

在我的site.master文件中,我发现在某处,但似乎没有帮助.有任何想法吗?知识分子也没有找到扩展方法.

asp.net-mvc extension-methods

7
推荐指数
1
解决办法
9168
查看次数