あなたはActionFilter
を実装し、TidyNet
(http://sourceforge.net/projects/tidynet/)のようなライブラリを使用することができます。
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.Result is ViewResult)
{
var tidy = new Tidy
{
Options =
{
DocType = DocType,
DropFontTags = DropFontTags,
LogicalEmphasis = LogicalEmphasis,
XmlOut = XmlOut,
Xhtml = Xhtml,
IndentContent = IndentContent,
HideEndTags = HideEndTags,
MakeClean = MakeClean,
TidyMark = TidyMark,
}
};
filterContext.RequestContext.HttpContext.Response.Filter =
new HtmlTidyFilter(filterContext.RequestContext.HttpContext.Response.Filter, tidy);
}
}
フィルタのアルゴリズム:
public override void Write(byte[] buffer, int offset, int count)
{
var data = new byte[count];
Buffer.BlockCopy(buffer, offset, data, 0, count);
string html = Encoding.Default.GetString(buffer);
using (var input = new MemoryStream())
{
using (var output = new MemoryStream())
{
byte[] byteArray = Encoding.UTF8.GetBytes(html);
input.Write(byteArray, 0, byteArray.Length);
input.Position = 0;
_tidy.Parse(input, output, new TidyMessageCollection());
string result = Encoding.UTF8.GetString(output.ToArray());
byte[] outdata = Encoding.Default.GetBytes(result);
_stream.Write(outdata, 0, outdata.GetLength(0));
}
}
}
そしてあなただけのコントローラーに差し込み:
[TidyHtml]
public class AnyController : Controller
Voilá! ;)
私はこのソースからそれを学んだ:http://blog.aquabirdconsulting.com/2009/10/28/asp-net-mvc-clean-html/
それはあなたの問題を解決しましたか? –