mvc生成静态html页面,如何在ASP.NET MVC 中使用Razor引擎生成一个静态页面

如何在ASP.NET MVC 中使用Razor引擎生成一个静态页面

发布时间:2021-01-20 16:41:52

来源:亿速云

阅读:71

作者:Leah

本篇文章为大家展示了如何在ASP.NET MVC 中使用Razor引擎生成一个静态页面,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

实现原理及步骤:

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;

}

/*

* 设置临时数据字典作为静态化标识

* 可以在视图上使用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; }

}

上述内容就是如何在ASP.NET MVC 中使用Razor引擎生成一个静态页面,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值