我想编写一个属性来将页眉/页脚注入页面。 这是我希望结束代码的样子:
[HeaderFooter]
public ActionResult Index()
{
return View();
}
HeaderFooter代码:
<header>
// header code here
</header>
<footer >
// footer code here
</footer >
查看代码:
<html>
//header to appear here.
PAGE CONTENT
//footer to appear here.
</html>
问题是:如何以直接注入html代码的方式编写属性代码,以便在actionresult中添加更多代码?
答案 0 :(得分:1)
如上所述,将action属性写入视图输出是不常见的。这可能更适合在视图或布局中使用section
声明,或者通过自定义视图引擎。
它不合适的原因是因为你的代码会将HTML写入响应,理想情况是保持关注点的分离,你的观点应该处理与渲染内容有关的一切。
但是要回答你的问题:
public class HeaderFooterAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.RequestContext.HttpContext.Response.Write("<header></header>");
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.RequestContext.HttpContext.Response.Write("<footer></footer>");
}
}