栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > asp

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

asp 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

详解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 
{ 
  ///  
  ///   描述:静态页面生成帮助类 
  ///  
  public class StaticPageHelper 
  { 
    ///  
    ///   根据View视图生成静态页面 
    ///  
    /// 存放静态页面所在绝对路径 
    /// ControllerContext 
    /// 视图名称 
    /// 模板视图名称 
    /// 参数实体模型 
    /// 返回信息 
    /// 是否分布视图 
    /// 生成成功返回true,失败false 
    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; 
 } 
 
  
 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; }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/55685.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号