[英]How do I set a default home page in ASP.NET Core 2?
我在ASP.NET MVC Core 2应用程序中配置默认主页时遇到一些困难。 当没有使用参数时,我似乎无法将路由映射到正确的主页,默认情况下,例如。 https://开头本地主机:44362
我真的不喜欢将控制器置于Controllers文件夹,视图中的视图和模型中的视图模型中的默认约定。 我更喜欢按功能分组。
所以我有这样的结构:
Features
Home
HomeController.cs
HomeIndex.cshtml
HomeViewModel.cs
Other
OtherController.cs
OtherIndex.cshtml
OtherViewModel.cs
一切正常,但是当没有提供路径时我似乎无法将默认页面变为/ Home / Index。 当HomeController在控制器(和视图/主页中的索引)中时,一切都有效,但是一旦我移动它,事情就会破裂。
我正在使用默认的Startup.cs文件,所以我有一个如下所示的Configure方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
我做了一些搜索,看起来在ConfigureServices方法中使用它应该工作:
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("", "/Home/Index");
});
抛出a:值不能为null或为空(pageName)异常。 我还尝试了“/”,“/ Home / Index”作为参数。 最后,为了更好的衡量,我还交换了上述参数,以防万一我误解了每个参数的用法。
在每种情况下,都不会显示任何页面。 如果我输入完整的URL / Home / Index,它就可以了。 我还尝试将[Route(“Home”)]属性附加到HomeController类,并将[Route(“Index”)]附加到action方法。
所以我显然搞砸了路由,但我不清楚如何解决这个问题。 我已经阅读并重新阅读了Razor Pages上的文档,这些文档似乎没有理解我的理解。
看起来我需要做的就是调整Razor视图引擎在Startup.cs中的位置
在这篇博文中:
然后我只需要删除我在测试期间添加的Route属性并开始工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.