全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解ASP.NET MVC 利用Razor引擎生成静态页

最近在研究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 


相关文章: 建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  详解jQuery停止动画——stop()方法的使用  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何高效搭建专业期货交易平台网站?  Bpmn 2.0的XML文件怎么画流程图  如何在自有机房高效搭建专业网站?  专业网站建设制作报价,网页设计制作要考什么证?  南宁网站建设制作定制,南宁网站建设可以定制吗?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  贸易公司网站制作流程,出口贸易网站设计怎么做?  如何配置IIS站点权限与局域网访问?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  建站之星如何优化SEO以实现高效排名?  建站主机空间推荐 高性价比配置与快速部署方案解析  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  c++ stringstream用法详解_c++字符串与数字转换利器  网站制作说明怎么写,简述网页设计的流程并说明原因?  做企业网站制作流程,企业网站制作基本流程有哪些?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  网站按钮制作软件,如何实现网页中按钮的自动点击?  外贸公司网站制作哪家好,maersk船公司官网?  如何快速完成中国万网建站详细流程?  个人网站制作流程图片大全,个人网站如何注销?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  如何在阿里云完成域名注册与建站?  建站之星好吗?新手能否轻松上手建站?  制作旅游网站html,怎样注册旅游网站?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  招商网站制作流程,网站招商广告语?  建站之星多图banner生成与模板自定义指南  如何确认建站备案号应放置的具体位置?  重庆市网站制作公司,重庆招聘网站哪个好?  网站专业制作公司有哪些,做一个公司网站要多少钱?  公众号网站制作网页,微信公众号怎么制作?  如何用AWS免费套餐快速搭建高效网站?  建站之星安装失败:服务器环境不兼容?  如何自定义建站之星模板颜色并下载新样式?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  宝塔新建站点为何无法访问?如何排查?  如何在腾讯云服务器上快速搭建个人网站?  高端云建站费用究竟需要多少预算?  如何用西部建站助手快速创建专业网站?  教学网站制作软件,学习*后期制作的网站有哪些?  青岛网站建设如何选择本地服务器?  如何在阿里云高效完成企业建站全流程?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何获取上海专业网站定制建站电话? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。