ASP.NET MVC 模版切换 自定义模板路径
不用的场景下使用不用的mvc 模版。
目录结构希望是
/templates
Default
Red
当传入 “Red ” 参数的时候则调用 Red 下面的View
可以直接使用默认的RazorView
return View(rv);
把 /Views 下面的 web.config 拷贝到 /templates 下
当然也可以自己实现一个IView
如:
namespace System.Web.Mvc
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Compilation;
using System.Web.WebPages;
public class ThemeRazorView : IView
{
private string template;
private string layout;
public ThemeRazorView(string _template, string _layout = "~/Views/Shared/_layout.cshtml")
{
template = _template;
layout = _layout;
}
public void Render(ViewContext viewContext, System.IO.TextWriter writer)
{
if (string.IsNullOrEmpty(template))
{
template = "default";
}
string viewPath = "~/Template/" + template +"/"+
viewContext.RouteData.GetRequiredString("controller") + "/" +
viewContext.RouteData.GetRequiredString("action") + ".cshtml";
Type viewType = BuildManager.GetCompiledType(viewPath);
WebViewPage page = Activator.CreateInstance(viewType) as WebViewPage;
page.Layout = layout;
page.VirtualPath = viewPath;
page.ViewContext = viewContext;
page.ViewData = viewContext.ViewData;
page.InitHelpers();
WebPageContext pageContext = new WebPageContext(viewContext.HttpContext, null, null);
WebPageRenderingBase startPage = StartPage.GetStartPage(page, "_ViewStart", new string[] { "cshtml", "vbhtml" });
page.ExecutePageHierarchy(pageContext, writer, startPage);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构