我在我的应用程序中创建了一个名为“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.mvc
和system.web.mvc.html
,但也无济于事。
答案 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>