ASP.NET MVC创建静态页
1.在MVC下新建一个类:StaticPageHelper
public class StaticPageHelper
{
/// <summary>
/// 根据View视图生成静态页面
/// </summary>
/// <param name="viewPath">视图名称</param>
/// <param name="htmlPath">存放静态页面所在绝对路径</param>
/// <param name="context">控制器上下文</param>
/// <param name="model">参数实体模型</param>
/// <param name="isPartial">是否分布视图</param>
/// <param name="masterName">模板视图名称</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;
//通过ViewEngines.Engines.FindView查找到对应的视图,如果是部分视图,则用:ViewEngines.Engines.FindPartialView
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);
//调用视图的Render()方法,将渲染结果保存到物理静态文件
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;
}
} public class AjaxResult
{
public bool IsSucess { get; set; }
public string Body { get; set; }
}
2.创建广告静态页与调用方法:
/// <summary>
/// 创建广告静态页
/// </summary>
/// <param name="LX_Column"></param>
/// <returns></returns>
private AjaxResult CreateStaticPage(string LX_Column)
{
AjaxResult ajaxResult = new AjaxResult();
View_Home view_Home = new View_Home();
view_Home.CommandAdList = GetCommandAdList(LX_Column);
string commandPage = ""; //模板页
string commandStaticPage = ""; //生成的静态面
if (view_Home.CommandAdList != null)
{
if (view_Home.CommandAdList.Count > )
{
if (view_Home.CommandAdList.FirstOrDefault().LX_Column == (int)Models.CommandAdLX_ColumnType.Index)
{
commandPage = "/Views/HtmlTemplate/CommandAd/CommandAdList.cshtml";
commandStaticPage = "/Static/Mobile/Home/CommandAdList.html";
}
else
{
commandPage = "/Views/HtmlTemplate/CommandAd/CommandAdThemeList.cshtml";
commandStaticPage = "/Static/Mobile/Home/CommandAdThemeList.html";
}
ajaxResult = StaticPageHelper.GenerateStaticPage(commandPage, Server.MapPath(commandStaticPage), ControllerContext, view_Home, true);
}
}
return ajaxResult;
}
ASP.NET MVC创建静态页的更多相关文章
- ASP.NET MVC创建的网站
ASP.NET MVC创建的网站 最近在写一个网站,昨天刚写完,由于要和朋友一起测试,但是他电脑上没有环境,所以希望我在自己电脑上部署一下,让他直接通过浏览器来访问来测试,所以从昨晚到今天上午,通 ...
- Asp.Net MVC页面静态化功能实现二:用递归算法来实现
上一篇提到采用IHttpModule来实现当用户访问网站的时候,通过重新定义Response.Filter来实现将返回给客户端的html代码保存,以便用户下一次访问是直接访问静态页面. Asp.Net ...
- Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter
上一篇有提到利用IHttpModule和ResultFilter实现页面静态化功能.后来经过一些改动,将ResultFilter中要实现的功能全部转移到IHttpModule中来实现 Asp.Net ...
- Asp.Net MVC页面静态化功能实现一:利用IHttpModule和ResultFilter
由于公司现在所采用的是一套CMS内容管理系统的框架,所以最近项目中有一个需求提到要求实现页面静态化的功能.在网上查询了一些资料和文献,最后采用的是小尾鱼的池塘提供的 利用ResultFilter实现a ...
- [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》
[ASP.NET MVC2 系列] [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序> ...
- ASP.NET MVC 页面静态化操作的思路
本文主要讲述了在asp.net mvc中,页面静态化的几种思路和方法.对于网站来说,生成纯html静态页面除了有利于seo外,还可以减轻网站的负载能力和提高网站性能.在asp.net mvc中,视图的 ...
- 设置ASP.NET MVC站点默认页为.html页 .
同事部署了一个Asp.Net MVC的站点,希望它的默认页是index.html页,在vs2010中给站点根目录增加了index.html,然后调用没有什么问题,但部署到IIS7上,在功能试图=> ...
- ASP.NET MVC - 创建Internet 应用程序
为了学习 ASP.NET MVC,我们将构建一个 Internet 应用程序. 第 1 部分:创建应用程序. 我们将构建什么 我们将构建一个支持添加.编辑.删除和列出数据库存储信息的 Internet ...
- 设置ASP.NET MVC站点默认页为html页
问题由来 部署了一个Asp.Net MVC的站点,其功能只是作为移动端的服务器,服务器空间里面除了CMS以外就没有其他的页面了.这对于我们来说确实是有点浪费了. 可以放点静态的啥小东西放在上面玩一玩. ...
随机推荐
- 栈经典列题:Rails
解题心得: 1.这题是先进后出的顺序,所以使用栈(先进后出表). 2.搞清楚题意,需要达成的序列和进入的序.不要弄混了. 3.思维混乱的时候要冷静,冷静,冷静~~~~! 题目: Description ...
- Linux多线程总结
一.Linux线程 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型.Linux是一种“多进程单线程”的操作系统.Linux本身只有进程的概念,而其所谓的“线程”本质 ...
- JVM垃圾回收--年轻代、年老点和持久代(转)
关键字约定 Young generation –>新生代 Tenured / Old Generation –>老年代 Perm Area –>永久代 年轻代: 所有新生成的对象 ...
- 2、python中的数字
第二篇开始谈谈python中的数据. 一.前言 python中的数字包含了整数.浮点数.复数三种.在python的早期版本,或许可以看到正数被分为长整数与短整数,后来被取消了,因此这里不作讨论.通常我 ...
- Linux命令之----tree
命令简介 tree命令的中文意思为“树”,功能是以树形结构列出指定目录下的所有内容,包括所有文件.子目录及子目录里的目录和文件. 命令格式 tree [option] [directory]tree ...
- TCP/IP网络编程之套接字与标准I/O
标准I/O函数 标准标准I/O函数有两个优点: 标准I/O函数具有良好的移植性 标准I/O函数可以利用缓冲提高性能 关于移植性无需过多解释,不仅是I/O函数,所有标准函数都具有良好的移植性.因为,为了 ...
- TCP/IP网络编程之多进程服务端(一)
进程概念及应用 我们知道,监听套接字会有一个等待队列,里面存放着不同客户端的连接请求,如果有一百个客户端,每个客户端的请求处理是0.5s,第一个客户端当然不会不满,但第一百个客户端就会有相当大的意见了 ...
- Hadoop数据管理介绍及原理分析
Hadoop数据管理介绍及原理分析 最近2014大数据会议正如火如荼的进行着,Hadoop之父Doug Cutting也被邀参加,我有幸听了他的演讲并获得亲笔签名书一本,发现他竟然是左手写字,当然这个 ...
- IOS开发学习笔记005-数组
数组 数组故名思议就是一组数据的集合. int a[10];//可以存储10个整数 char c[8];//可以存储8个字符‘ 一般格式:数组类型 数组名[元素个数]: 数组元素的访问:下标,a[2 ...
- 使用 Item,ItemManager 在 XNA 中创建物品和道具(十六)
平方已经开发了一些 Windows Phone 上的一些游戏,算不上什么技术大牛.在这里分享一下经验,仅为了和各位朋友交流经验.平方会逐步将自己编写的类上传到托管项目中,没有什么好名字,就叫 WPXN ...