sas*_*eve 6 action-filter asp.net-mvc-3
假设我们在控制器中有一些动作:
public ActionResult SomeAction()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
我希望有可能借助属性将一些HTML代码附加到视图的HTML结果的末尾,例如:
[SomeHTML]
public ActionResult SomeAction()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
哪里
public class SomeHTMLAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var response = filterContext.HttpContext.Response;
if (response.ContentType == "text/html")
{
response.Write("someHTML");
}
}
}
Run Code Online (Sandbox Code Playgroud)
过滤器(ActionFilterAttribute)允许将一些HTML代码附加到网页的顶部或底部,但不能附加到视图的HTML末尾.
如何存档?
Dar*_*rov 12
您可以使用Response过滤器:
public class SomeHTMLAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Response.Filter = new SomeHTMLFilter(filterContext.HttpContext.Response.Filter);
base.OnActionExecuting(filterContext);
}
}
public class SomeHTMLFilter : MemoryStream
{
private readonly Stream _outputStream;
public SomeHTMLFilter(Stream outputStream)
{
_outputStream = outputStream;
}
public override void Write(byte[] buffer, int offset, int count)
{
_outputStream.Write(buffer, 0, buffer.Length);
}
public override void Close()
{
var buffer = Encoding.UTF8.GetBytes("Hello World");
_outputStream.Write(buffer, 0, buffer.Length);
base.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3064 次 |
最近记录: |