【发布时间】:2021-03-10 07:35:52
【问题描述】:
我知道有一个区域特征。但我认为这对于我真正需要的东西来说已经足够了。
- 我有一个从 MVC 模板构建的
netcoreapp3.1 - 我有一个
HomeController(命名空间My.Project.Controllers) - 我还有一个
SettingsController(命名空间My.Project.Controllers.Admin) - 在我的
_Layout.cshtml中,我像这样链接到控制器(生成的链接是https://localhost:5001/admin/settings/,正如预期的那样。
@if (User.IsInRole("admin"))
{
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle text-dark" href="#" id="navbarDropdown" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Admin
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" asp-area="" asp-controller="settings" asp-action="Index">Settings</a>
</div>
</li>
}
我还将第一个 MapControllerRoute 添加到我的 Startup.Configure 方法中
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "admin",
pattern: "admin/{controller=Home}/{action=Index}/{id?}"
);
endpoints.MapRazorPages();
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
控制器被调用并且
public class SettingsController : Controller
{
private readonly ISettingsProvider settingsProvider;
public SettingsController(ISettingsProvider settingsProvider)
{
this.settingsProvider = settingsProvider;
}
public IActionResult Index()
{
var settings = settingsProvider.GetSettings();
return View(settings);
}
}
现在我收到以下错误
处理请求时发生未处理的异常。 InvalidOperationException:未找到视图“索引”。搜索了以下位置:
/Views/Settings/Index.cshtml
/Views/Shared/Index.cshtml
/Pages/Shared/Index.cshtml
正如我已经说过的,我也尝试过使用区域,但这需要我将我的文件放在一个 Areas 文件夹中,并拥有自己的 Views 文件夹和 viewstart 等。
我与 nancy fx 合作了很多,我习惯于首先在 Views/Admin/Settings 中搜索 My.Project.Modules.Admin.SettingsModule 的视图。
如何使用 ASP.NET Core MVC 实现相同的效果(对于 Views/Admin/Settings 中的 My.Project.Controllers.Admin.SettingsController 搜索视图?)
- src/
- Views/
- Home/
- Index.cshtml
- Admin/
- Settings/
- Index.cshtml
- Controllers/
- Admin/
SettingsController.cs
- HomeController.cs
【问题讨论】:
标签: c# asp.net-mvc razor