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创建静态页的更多相关文章

  1. ASP.NET MVC创建的网站

    ASP.NET MVC创建的网站   最近在写一个网站,昨天刚写完,由于要和朋友一起测试,但是他电脑上没有环境,所以希望我在自己电脑上部署一下,让他直接通过浏览器来访问来测试,所以从昨晚到今天上午,通 ...

  2. Asp.Net MVC页面静态化功能实现二:用递归算法来实现

    上一篇提到采用IHttpModule来实现当用户访问网站的时候,通过重新定义Response.Filter来实现将返回给客户端的html代码保存,以便用户下一次访问是直接访问静态页面. Asp.Net ...

  3. Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter

    上一篇有提到利用IHttpModule和ResultFilter实现页面静态化功能.后来经过一些改动,将ResultFilter中要实现的功能全部转移到IHttpModule中来实现 Asp.Net ...

  4. Asp.Net MVC页面静态化功能实现一:利用IHttpModule和ResultFilter

    由于公司现在所采用的是一套CMS内容管理系统的框架,所以最近项目中有一个需求提到要求实现页面静态化的功能.在网上查询了一些资料和文献,最后采用的是小尾鱼的池塘提供的 利用ResultFilter实现a ...

  5. [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》

    [ASP.NET MVC2 系列]      [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序>       ...

  6. ASP.NET MVC 页面静态化操作的思路

    本文主要讲述了在asp.net mvc中,页面静态化的几种思路和方法.对于网站来说,生成纯html静态页面除了有利于seo外,还可以减轻网站的负载能力和提高网站性能.在asp.net mvc中,视图的 ...

  7. 设置ASP.NET MVC站点默认页为.html页 .

    同事部署了一个Asp.Net MVC的站点,希望它的默认页是index.html页,在vs2010中给站点根目录增加了index.html,然后调用没有什么问题,但部署到IIS7上,在功能试图=> ...

  8. ASP.NET MVC - 创建Internet 应用程序

    为了学习 ASP.NET MVC,我们将构建一个 Internet 应用程序. 第 1 部分:创建应用程序. 我们将构建什么 我们将构建一个支持添加.编辑.删除和列出数据库存储信息的 Internet ...

  9. 设置ASP.NET MVC站点默认页为html页

    问题由来 部署了一个Asp.Net MVC的站点,其功能只是作为移动端的服务器,服务器空间里面除了CMS以外就没有其他的页面了.这对于我们来说确实是有点浪费了. 可以放点静态的啥小东西放在上面玩一玩. ...

随机推荐

  1. kuangbin 最短路集合

    Til the Cows Come Home poj-2387 #include<iostream> #include<cstdio> #include<algorith ...

  2. 记忆化搜索:POJ1088-滑雪(经典的记忆化搜索)

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑 ...

  3. Sliding Window POJ - 2823

    Description An array of size n ≤ 106 is given to you. There is a sliding window of size k which is m ...

  4. hibernate实体xml一对多关系映射

    单向一对多关系映射: 一个房间对应多个使用者,也就是Room實例知道User實例的存在,而User實例則沒有意識到Room實例. 用户表: package onlyfun.caterpillar; p ...

  5. Diycode开源项目 MyTopicActivity分析

    1.总体浏览效果及布局分析 1.1.看一下我的帖子预览效果 1.2.然后看一下我的收藏预览效果 1.3.归纳一下 所以我的帖子和我的收藏可以共用同一个类. 布局效果几乎一样,只是用户的选择不同. 所以 ...

  6. Diycode开源项目 LoginActivity分析

    1.首先看一下效果 1.1.预览一下真实页面 1.2.分析一下: 要求输入Email或者用户名,点击编辑框,弹出键盘,默认先进入输入Email或用户名编辑框. 点击密码后,密码字样网上浮动一段距离,E ...

  7. Android Studio 快捷键(包含自定义)终极版

      [F] [F] F2 在错误代码之间切换 F3 往前定位(Shift + F3:往后定位 )有问题 F4\Ctrl+鼠标点击\Ctrl+B 转到定义,查看类继承关系 F5 但不调试进入函数内部. ...

  8. 2019腾讯暑期实习面试(offer)前端

    最近在忙着准备找实习,所以没有更新之前的文章. 不过所幸功夫不负有心人,我拿到了腾讯的offer. 这里分享一下面试的经验. 简介 本人双非本科,普通学生一枚. 面的是腾讯的Web前端开发. 整个面试 ...

  9. B树、B-树、B+树、B*树之间的关系

    https://blog.csdn.net/u013411246/article/details/81088914

  10. loj2071 「JSOI2016」最佳团体

    分数规划+树形依赖背包orz #include <iostream> #include <cstring> #include <cstdio> #include & ...