详解ASP.NET MVC 利用Razor引擎生成静态页
发布时间 - 2026-01-11 00:25:49 点击率:次最近在研究ASP.NET MVC生成静态页,那么今天也算个学习笔记吧!

实现原理及步骤:
1.通过ViewEngines.Engines.FindView查找到对应的视图,如果是部分视图,则用:ViewEngines.Engines.FindPartialView;
2.设置上下文对象里的Model;
3.调用视图的Render()方法,将渲染结果保存到物理静态文件;
using System;
using System.IO;
using System.Text;
using System.Web.Mvc;
namespace Whir.Foundation.UI
{
/// <summary>
/// 描述:静态页面生成帮助类
/// </summary>
public class StaticPageHelper
{
/// <summary>
/// 根据View视图生成静态页面
/// </summary>
/// <param name="htmlPath">存放静态页面所在绝对路径</param>
/// <param name="context">ControllerContext</param>
/// <param name="viewPath">视图名称</param>
/// <param name="masterName">模板视图名称</param>
/// <param name="model">参数实体模型</param>
/// <param name="html">返回信息</param>
/// <param name="isPartial">是否分布视图</param>
/// <returns>生成成功返回true,失败false</returns>
public static AjaxResult GenerateStaticPage(string viewPath,
string htmlPath,
ControllerContext context, object model = null, bool isPartial = false,
string masterName = "")
{
var ajaxResult = new AjaxResult();
try
{
//创建存放静态页面目录
if (!Directory.Exists(Path.GetDirectoryName(htmlPath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(htmlPath));
}
//删除已有的静态页面
if (File.Exists(htmlPath))
{
File.Delete(htmlPath);
}
ViewEngineResult result = null;
if (isPartial)
{
result = ViewEngines.Engines.FindPartialView(context, viewPath);
}
else
{
result = ViewEngines.Engines.FindView(context, viewPath, masterName);
}
if (model != null)
{
context.Controller.ViewData.Model = model;
}
/*
* 设置临时数据字典作为静态化标识
* 可以在视图上使用TempData["IsStatic"]来控制某些元素显示。
*/
if (!context.Controller.TempData.ContainsKey("IsStatic"))
{
context.Controller.TempData.Add("IsStatic", true);
}
if (result.View != null)
{
using (var sw = new StringWriter())
{
var viewContext = new ViewContext(context,
result.View,
context.Controller.ViewData,
context.Controller.TempData, sw);
result.View.Render(viewContext, sw);
string body = sw.ToString();
File.WriteAllText(htmlPath, body, Encoding.UTF8);
ajaxResult.IsSucess = true;
ajaxResult.Body = "存放路径:" + htmlPath;
}
}
else
{
ajaxResult.IsSucess = false;
ajaxResult.Body = "生成静态页面失败!未找到视图!";
}
}
catch (IOException ex)
{
ajaxResult.IsSucess = false;
ajaxResult.Body = ex.Message;
}
catch (Exception ex)
{
ajaxResult.IsSucess = false;
ajaxResult.Body = ex.Message;
}
return ajaxResult;
}
}
}
AjaxResult 是自己封装的一个类,您也可以用自己封装的类代替。
public class AjaxResult
{
public bool IsSucess { get; set; }
public string Body { get; set; }
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# mvc
# 生成静态页面
# mvc4
# 生成静态页
# 详解ASP.NET Razor 语法
# ASP.NET MVC重写RazorViewEngine实现多主题切换
# ASP.NET MVC4 Razor模板简易分页效果
# ASP.NET Razor模板引擎中输出Html的两种方式
# ASP.NET MVC使用RazorEngine解析模板生成静态页
# asp.net模板引擎Razor调用外部方法用法实例
# asp.net模板引擎Razor中cacheName的问题分析
# 使用Asp.net Mvc3 Razor视图方式扩展JQuery UI Widgets方法介绍
# 详细分析ASP.NET Razor之C# 变量
# 可以用
# 也算
# 您也
# 大家多多
# 则用
# 未找到
# 学习笔记
# summary
# gt
# public
# StaticPageHelper
# lt
# namespace
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何在建站主机中优化服务器配置?
三星、SK海力士获美批准:可向中国出口芯片制造设备
免费视频制作网站,更新又快又好的免费电影网站?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
千库网官网入口推荐 千库网设计创意平台入口
在线制作视频网站免费,都有哪些好的动漫网站?
Python自动化办公教程_ExcelWordPDF批量处理案例
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
Android GridView 滑动条设置一直显示状态(推荐)
JS去除重复并统计数量的实现方法
如何在Windows环境下新建FTP站点并设置权限?
如何快速搭建FTP站点实现文件共享?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
Laravel PHP版本要求一览_Laravel各版本环境要求对照
js实现点击每个li节点,都弹出其文本值及修改
Laravel如何实现用户密码重置功能?(完整流程代码)
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Laravel如何生成URL和重定向?(路由助手函数)
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
微信小程序制作网站有哪些,微信小程序需要做网站吗?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
大同网页,大同瑞慈医院官网?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
JavaScript Ajax实现异步通信
lovemo网页版地址 lovemo官网手机登录
Laravel如何使用查询构建器?(Query Builder高级用法)
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
如何快速上传自定义模板至建站之星?
如何在建站之星网店版论坛获取技术支持?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
如何快速打造个性化非模板自助建站?
如何自定义建站之星模板颜色并下载新样式?
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
制作旅游网站html,怎样注册旅游网站?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】

