【问题标题】:'System.Web.WebPages.Html.HtmlHelper' does not contain a defintion for 'Action'“System.Web.WebPages.Html.HtmlHelper”不包含“Action”的定义
【发布时间】:2012-06-08 20:51:38
【问题描述】:

感谢您阅读本文。

在_Layout.cshtml页面我使用@RenderPage来调用header:

@RenderPage("/Shared/_header.cshtml")

它有这个:

<div id="Header"> Home </div>

想让它可点击到默认操作(“索引”)

当我尝试这个时:

<div id="Header"> @Html.Action("Index", "MyController") </div>

“操作”以红色下划线显示此错误:

'System.Web.WebPages.Html.HtmlHelper' does not contain a defintion for 'Action' and no extension ......

“System.Web.Mvc”在项目中以及配置文件中被引用:

<add namespace="System.Web.Mvc" />

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    您需要将Views/Web.config 复制到/Shared

    This will tell Razor to use the MVC base type & parser

    【讨论】:

    • 谢谢;我知道我可以将 _header 和 footer 移动到 /view/shared 可以吗?顺便说一句,谢谢你的博客。
    • 是的;那会更好。不过,通常情况下,您应该将标题直接放在布局中,而不是放在单独的文件中。
    • 另外,调用Html.Partial(MVC 版本),而不是RenderPage()(WebPages 版本)
    • 你的意思是这样的:[link] (stackoverflow.com/questions/10552502/…)
    • 如果需要传递数据,直接从布局中调用子action即可。
    【解决方案2】:

    我已经从 mvc4 迁移到 mvc5
    我需要做的就是在 web.config 中更改这个键值 从 2

     <add key="webpages:Version" value="3.0.0.0" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      相关资源
      最近更新 更多