You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为.NET Core 3.1 MVC项目添加额外cshtml页面并绑定访问URL

.NET Core 3.1 MVC 自定义页面配置问题解答

问题1:cshtml文件存放位置

cshtml是Razor视图文件,属于服务端动态渲染资源,必须存放在Views目录下,不能放在wwwroot目录,原因如下:

  • wwwroot是.NET Core默认的静态资源目录,仅用于存放不需要服务端编译处理的静态文件(css、js、静态html、图片等),放在该目录下的cshtml不会被Razor引擎编译,直接访问会返回源代码,既达不到渲染效果也存在代码泄露风险
  • 常规存放规则:
    • 如果你为该页面单独创建了控制器(比如CustomController),就存放在Views/Custom/目录下,视图文件名和控制器下返回该视图的Action名保持一致即可
    • 如果是多个控制器共用的页面,可存放在Views/Shared/目录下

问题2:页面与访问URL关联配置

正确配置方式

.NET Core MVC的路由规则统一在服务端配置,不能在Index.cshtml或_ViewStart.cshtml中完成路由绑定,这两个都是视图渲染文件,不负责路由规则注册,正确配置步骤如下:

  1. 先创建对应控制器和Action方法,示例代码:
public class CustomPageController : Controller
{
    // 该Action返回你的自定义cshtml视图
    public IActionResult MyPage()
    {
        // 如果你的cshtml存放在Views/Shared目录下,直接写视图文件名即可
        // 如果存放在对应控制器目录,且文件名和Action名一致,可以直接return View()
        return View("MyPage");
    }
}
  1. 绑定自定义URL,有两种可选方式:
  • 方式1:特性路由,直接在Action上添加路由标记,适合单独为单个页面配置自定义路径:
[Route("target-page-path")] // 这里写你要绑定的站点内路径,访问你的域名+/target-page-path即可打开页面
public IActionResult MyPage()
{
    return View("MyPage");
}
  • 方式2:全局路由配置,在Startup.cs的Configure方法的UseEndpoints配置块中添加自定义路由规则:
app.UseEndpoints(endpoints =>
{
    // 自定义路由规则写在默认路由前面
    endpoints.MapControllerRoute(
        name: "customPage",
        pattern: "target-page-path",
        defaults: new { controller = "CustomPage", action = "MyPage" });
    
    // 原有默认MVC路由保留即可
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});
  1. 按钮跳转配置:在你需要添加跳转按钮的页面(比如Index.cshtml)中,直接给按钮绑定跳转路径即可:
<a href="/target-page-path" class="btn">点击跳转</a>

注意:如果你需要绑定的是独立域名(非站点内路径),需要在Web服务器(IIS、Nginx等)层面做域名绑定和转发规则配置,不属于MVC项目内部配置范围。


内容的提问来源于stack exchange,提问作者user14943311

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:54:00