c# - 在程序启动时更改默认控制器
问题描述
我在我的 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
并将构建操作从内容更改为嵌入式资源,但这仍然给了我上面相同的消息。
解决方案
这个设置对我来说很好:
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
。
推荐阅读
- c++ - 设置位的最佳方法是什么?为什么?
- sql - 如何在 SQL 中将使用 case 语句创建的 2 个新的附加列放在一起
- python - 按升序排列列
- python - 将列表语句从 python 插入 MySQL 时出错
- javascript - getMinutes() 需要多次刷新尝试才能正常工作
- asp.net-mvc - IDX10500:签名验证失败。无法解析 SecurityKeyIdentifier:'SecurityKeyIdentifier
- python - xlsxWriter URL 格式问题
- ios - 如何使用枚举处理来自多个结果的数据
- r - 将向量的最大值保留到R中的另一个向量中
- mysql - 为什么我在“日期”数据类型中出现错误?