我正在尝试让WriteSubstition在MVC 5中工作,并且在执行替换时,它在请求开始时执行,而不是在调用替换的位置。
我使用了以下扩展方法:
public static class HtmlExtensions
{
public delegate string CacheCallback(HttpContextBase context);
public static object Substitution(this HtmlHelper myHtml, CacheCallback cacheCallback)
{
myHtml.ViewContext.HttpContext.Response.WriteSubstitution(
c => HttpUtility.HtmlEncode(
cacheCallback(new HttpContextWrapper(c))
));
return null;
}
}
并在Index.cshtml中调用它,如下所示:
<div class="row">
<div class="col-md-4">
<h2Test</h2>
@DateTime.Now
@Html.Substitution(ctx => DateTime.Now.ToString())
@{Html.ViewContext.HttpContext.Response.WriteSubstitution(c => DateTime.Now.ToString());}
</div>
</div>
正如你所看到的,我也尝试了没有扩展方法,调用WriteSubstitution内联。当页面呈现时,替换块位于请求的开头:
10/10/2014 11:33:46 AM10/10/2014 11:33:46 AM<!DOCTYPE html>
<html>
这是WriteSubstitution中的错误,还是我做错了什么?