首页 > 解决方案 > 在程序启动时更改默认控制器

问题描述

我在我的 asp.net 5.0 mvc 项目中创建了一个新控制器和视图,并希望该新控制器成为在程序第一次启动时查看的控制器,而不是默认的 Home 控制器。我面临的问题是,当我启动应用程序时它告诉我

invalidOperationException:未找到视图“UserIndex”。搜索了以下位置:/Views/UsernameEntry/UserIndex.cshtml /Views/Shared/UserIndex.cshtml

UsernameEntryController

public class UsernameEntryController : Controller
{
    // GET: UsernameEntryController
    public ActionResult UserIndex()
    {
        return View();
    }

}

然后我在名为 UsernameEntry 的视图中有一个文件夹,文件名为 UserIndex.cshtml

其中包含<h2>User entry testing</h2>

我在网上看到,如果我想在程序启动时更改默认控制器,我需要在 Startup.cs 文件中的Configure方法下进行修改:

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=UsernameEntry}/{action=UserIndex}/{id?}");
        });

但它不起作用我什至去了它的属性UserIndex.cshtml并将构建操作从内容更改为嵌入式资源,但这仍然给了我上面相同的消息。

标签: c#asp.net-mvc

解决方案


这个设置对我来说很好:

在此处输入图像描述

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }
    app.UseStaticFiles();

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=UsernameEntry}/{action=UserIndex}/{id?}");
    });
}

视图的Build Action设置为其默认值Content


推荐阅读