繁体   English   中英

如何在ASP.NET Core 2中设置默认主页?

[英]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中的位置

如何指定视图位置

在这篇博文中:

ASP.NET核心中的特征文件夹结构

然后我只需要删除我在测试期间添加的Route属性并开始工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM