/// <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>
private bool GenerateStaticPage(string viewPath,
string htmlPath,
ControllerContext context, object model = null, bool isPartial = false,
string masterName = "")
{
//创建存放静态页面目录
if (!Directory.Exists(Path.GetDirectoryName(htmlPath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(htmlPath));
}
//删除已有的静态页面
if (System.IO.File.Exists(htmlPath))
{
System.IO.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 (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();
System.IO.File.WriteAllText(htmlPath, body, System.Text.Encoding.UTF8);
}
}
else
{
}
return true;
}
[HttpPost]
public ActionResult GetActions()
{
string filecshtml = Server.MapPath("/") + "Views\\WZW";
DirectoryInfo directoryInfo= new DirectoryInfo(filecshtml);
var files= directoryInfo.GetFiles();
if (files != null && files.Length > 0)
{
for (int i = 0; i < files.Length; i++)
{
//得到View中的所有cshtml文件名前缀,如 Index.cshtml=>Index
string viewPath = files[i].Name.Replace(files[i].Extension,"");
string htmlPath = Server.MapPath("/") + viewPath + ".html";
ControllerContext context = new ControllerContext(this.ControllerContext.RequestContext, ControllerContext.Controller);
GenerateStaticPage(viewPath, htmlPath, context, null, false, "");
}
}
return Content("生成成功!");
}
<script>
$(function () {
$("#ClickActions").click(function () {
$.ajax({
type: "POST",
url: "/WZW/GetActions",
success: function (msg) {
alert(msg);
}
});
});
});
</script>
<input type="button" id="ClickActions" value="生成静态页面" />