麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

ASP.NET MVC 3仿Server.Transfer效果的實現方法

2024-07-10 13:29:35
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了ASP.NET MVC 3仿Server.Transfer效果的實現方法,需要的朋友可以參考下

當我們在使用ASP.NET MVC實現頁面跳轉的時候,常用的應該是:

Redirect RedirectToAction RedirectToRoute

或者在前臺使用腳本跳轉。

但這幾種跳轉方式都是基于Get請求的,在某些特定場景下可能并不適用。例如需要傳遞大數據量參數、或者復雜對象類型參數的場景,get方式肯定是有限制的。

這種方式具有如下的特點:

在webform里面,有一種服務器端跳轉方式:Server.Transfer,相信大家一定都還記得。這種方式是中止當前頁面執行,并將執行流程轉入一個新的頁面,并使用上一個頁面創建的應答流。

1,地址欄URL不會發生變化。

2,上一個頁面后臺產生的參數和對象可以直接傳遞到新的頁面。

3,減少客戶端對服務器的請求。

約定勝于配置

我們知道,ASP.NET MVC有一個核心思想,就是“” ,例如在執行完一個action后,會到view目錄下根據controller名稱查找對應的view來進行渲染,但是 約定的做法并不意味著不能改變。

對于ASP.NET MVC而言,可以通過動態改變當前Action所渲染的view路徑,來實現類似的效果。

渲染非常規路徑的View

第一步,先實現一個自定義的ViewEngine:

 

 
  1. public class ChangeViewEngine : System.Web.Mvc.RazorViewEngine 
  2. public ChangeViewEngine(string controllerPathName,string viewName) 
  3. this.ViewLocationFormats = new[] {"~/Views/" + controllerPathName + "/" + viewName + ".cshtml" }; 
  4.  

第二步,實現一個ActionAttribute

 

 
  1. [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] 
  2. public class ChangeViewPathAttribute : ActionFilterAttribute 
  3. private string _controllerPath; 
  4. private string _viewName; 
  5. public ChangeViewPathAttribute(string controllerPath,string viewName) 
  6. this._controllerPath = controllerPath; 
  7. this._viewName = viewName; 
  8. public override void OnResultExecuting(ResultExecutingContext filterContext) 
  9. //base.OnResultExecuting(filterContext); 
  10. //ViewEngines.Engines.Clear(); 
  11.  
  12. ViewEngines.Engines.Add(new ChangeViewEngine(_controllerPath,_viewName)); 

在該段代碼里面,ChangeViewPathAttribute類繼承于ActionFilter,并重寫其中的OnResultExecuting方法,將自定義的ViewEngine加入到全局ViewEngine集合里面來。

第三步,在需要渲染不同路徑的action加上Attribute

 

 
  1. [HttpPost] 
  2. [Filter.ChangeViewPath("Invoice","Create")] 
  3. public ActionResult PreInvoice(string strIds,bool flag) 

在做完以上步驟后,我們就可以隨意指定action所要渲染的view,在服務器端進行跳轉,實現類似Server.Transfer的效果。 當然,以上只是一個簡單的示例,你完全可以做的更優雅一點,實現更靈活的路徑配置。

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 极品大长腿啪啪高潮露脸 | 午夜精品成人 | 免费在线看黄 | 成人毛片视频在线观看 | 北原夏美av | 欧美一级黄 | 色日本视频 | 国产精品视频yy9299一区 | 免费网站看v片在线a | 中文字幕免费在线看 | 欧美日韩免费一区 | 日韩欧美中文字幕视频 | 欧美五月婷婷 | 久久精品国产99久久6动漫亮点 | 亚洲天堂成人在线 | 亚洲第一男人天堂 | 污视频在线免费播放 | 99精品国产一区二区三区 | 国产精品一区免费在线观看 | 亚洲第一视频 | 嗯~啊~弄嗯~啊h高潮视频 | 精品久久久久久亚洲精品 | 天堂福利电影 | 羞羞视频在线免费 | 成人在线视频播放 | 中文日产幕无线码6区免费版 | 欧美精品欧美极品欧美激情 | 黄色一级片毛片 | 天堂成人一区二区三区 | 欧美无极品 | 女教师~淫辱の动漫在线 | 永久免费黄色片 | 看免费的毛片 | 国产自在线 | 国产成人在线视频 | 欧美视频国产 | 欧洲黄视频 | 日本中文字幕网址 | 请播放一级毛片 | 成人国产精品齐天大性 | 欧美精品一区二区三区在线 |