简体   繁体   English

如何在MVC 3 Razor中使用过滤器修改HTTP响应?

[英]How to modify HTTP Response Using Filters in MVC 3 Razor?

HtML section in _Layout.cshtml _Layout.cshtml中的HtML部分

<div id="header">
      <div class="logo"><a href="#"><img src="@Url.Content("~/!(IMAGEPATH)!/logo.png")" alt="" /></a></div>
      <div class="fb_like"><img src="@Url.Content("~/!(IMAGEPATH)!/fb_like_btn.png")" alt="" /></div>
      <div class="google_plus"><img src="@Url.Content("~/!(IMAGEPATH)!/google_plus.png")" alt="" /></div>
      <div class="header_rt">
        <ul>
          <li>Call us: 1500 258 789</li>
          <li><a href="#">Live chat</a></li>
          <li><a href="#">My Account</a></li>
          <li><a href="#">Sign in</a></li>
        </ul>
        <div class="search">
          <input type="text" value="Type your keyword..." class="srh_txt" />
          <input name="Submit" type="submit" value="Submit" class="srh_btn" />
        </div>
      </div>
    </div>
  <div id="main">
      @RenderBody()
 </div>

Html section in Index.cshtml Index.cshtml中的HTML部分

@{
   ViewBag.Title = "Home Page";
}
<div class="clr"></div>
<div id="banner">
<div id="slider"><img src="@Url.Content("~/!(IMAGEPATH)!/banner.jpg")" alt="" /></div>
<div class="banner_rt">
  <div class="adv1"><img src="@Url.Content("~/!(IMAGEPATH)!/adv1.jpg")" alt="" /></div>
  <div class="adv2"><img src="@Url.Content("~/!(IMAGEPATH)!/adv2.jpg")" alt="" /></div>
</div>

Using bellow code I able to Replace !(IMAGEPATH)! 使用下面的代码,我可以替换!(IMAGEPATH)! only in _Layout.cshtml 仅在_Layout.cshtml中

   void Application_PostReleaseRequestState(object sender,EventArgs e)
   {
      if(string.CompareOrdinal(Response.ContentType,"text/html") == 0)
      {
         Response.Filter = new ResponseFilter(Response.Filter);
      }
   }

But above described code not affecting child pages like Index.cshtml . 但是上述代码不会影响子页面(如Index.cshtml) Please tell me any event in ASP.NET MVC3 like old protected override void OnPreInit(EventArgs e) of Classic ASP.NET !!!! 请告诉我ASP.NET MVC3中的任何事件, 例如经典ASP.NET的旧的受保护重写void OnPreInit(EventArgs e)

I want to know which event effecting all the child pages before rendering in MVC3 ? 我想知道哪个事件会在MVC3中呈现之前影响所有子页面?

Within Base Controller , write the bellow code 基本控制器内 ,编写以下代码

protected override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        var response = filterContext.HttpContext.Response;
        if (string.CompareOrdinal(response.ContentType, "text/html") == 0)
        {
            response.Filter = new ResponseFilter(response.Filter);
        }
        base.OnResultExecuting(filterContext);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM