【发布时间】:2017-04-08 12:42:58
【问题描述】:
我有一个Area,命名为我正在尝试导航到的项目。该区域有两个Controllers,分别名为 Project 和 Dashboard,每个都有一个 Index 操作。
[Authorize]
[Area("Projects")]
public class ProjectController : Controller
{
...
}
[Authorize]
[Area("Projects")]
public class DashboardController : Controller
{
...
}
我在 Startup.cs 中定义了以下路由。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "Projects",
template: "{area}/{controller}/{action}/{id?}");
...
});
当我在仪表板中输入 url “http://localhost:1234:Projects/Dashboard” 时,它可以工作 - 显示视图。但是,在此视图中为 Project 控制器定义了以下标签助手,我得到了 url http://localhost:1234/Project?area=Projects 并没有找到 404:
<a asp-area="Projects" asp-controller="Project" asp-action="Index">
<span>Goto Project</span>
</a>
网址必须是http://localhost:1234/Projects/Project。如果我在浏览器地址栏中输入它,那么它会显示项目索引视图。我假设我的路线配置正确。
我已经尝试过 asp-area="Projects" 并且也省略了 asp-area 标签。我已经多次搜索area docs 和routing docs 无济于事。
我的目标是 .NET Framework 4.6.2。以下是 csproj 感兴趣的领域:
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.1" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0" PrivateAssets="All" />
<PackageReference Include="SimpleInjector.Integration.AspNetCore.Mvc" Version="3.3.2" />
<PackageReference Include="Telerik.UI.for.AspNet.Core" Version="2017.1.223" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" />
</ItemGroup>
我在项目的根级别创建了一个名为 Areas 的文件夹。即:
ACMEMVCWebApp\Areas\Projects
ACMEMVCWebApp\Areas\Projects\Controllers
ACMEMVCWebApp\Areas\Projects\Views
如何使用 Anchor Tag Helper 从仪表板导航到项目?
【问题讨论】: