区域中的Html.ActionLink引用错误MVC4

时间:2014-07-31 15:46:57

标签: c# asp.net asp.net-mvc asp.net-mvc-4 visual-studio-2013

我在我的应用程序中创建了一个名为“Admin”的区域,当我尝试使用@html.actionlink()构建一些菜单项时,我遇到了一个引用错误。

  

system.web.WebPages.Html.HtmlHelper不包含ActionLink的定义和最佳扩展方法重载System.Web.Html.LinkExtensions.ActionLink(System.Web.HtmlHelper,string,string,string)有一些无效参数。

这是产生错误的代码行。

@Html.ActionLink("Posts", "Index", new { area = "admin" }); 

我已经用Google搜索并试图添加using system.web.mvc.html;而没有任何好处或改变行为。我检查了该区域的web.config文件,并确认名称空间中包含system.web.mvcsystem.web.mvc.html,但也无济于事。

2 个答案:

答案 0 :(得分:1)

你错误地使用了actionlink。

以下是actionlink的正确用法(我以任意操作链接为例)

Html.ActionLink(article.Title,   // <--Link Text
            "Item",   // <-- ActionMethod
            "Login",  // <-- Controller Name.
            new { id = article.ArticleID }, // <-- Route arguments.
            null  // <-- htmlArguments 
            )

这使用以下方法ActionLink签名:

public static string ActionLink(this HtmlHelper htmlHelper, 
                            string linkText,
                            string actionName,
                            string controllerName,
                            object values, 
                            object htmlAttributes)

错误出现在您的问题中,因为Actionlink的第三次重载是控制器名称。

@Html.ActionLink("// Link Text //", "// Action Name //",// controller name //, new { area = "admin" });

答案 1 :(得分:0)

您的web.config文件夹中缺少/Areas/Admin/Views。只需创建如下所示的基本部分,关键部分是添加的命名空间:

<?xml version="1.0"?>

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.Optimization" />
        <add namespace="Club.Web" />
        <add namespace="Club.Web.Helpers"/>

      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>