91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET MVC3如何實現仿Server.Transfer效果

發布時間:2021-08-22 15:21:04 來源:億速云 閱讀:162 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“ASP.NET MVC3如何實現仿Server.Transfer效果”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“ASP.NET MVC3如何實現仿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:

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

第二步,實現一個ActionAttribute

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
  public class ChangeViewPathAttribute : ActionFilterAttribute
  {
    private string _controllerPath;
    private string _viewName;
    public ChangeViewPathAttribute(string controllerPath,string viewName)
    {
      this._controllerPath = controllerPath;
      this._viewName = viewName;
    }
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
      //base.OnResultExecuting(filterContext);
      //ViewEngines.Engines.Clear();
      
      ViewEngines.Engines.Add(new ChangeViewEngine(_controllerPath,_viewName));
    }
  }

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

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

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

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

以上是“ASP.NET MVC3如何實現仿Server.Transfer效果”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

进贤县| 防城港市| 道孚县| 石景山区| 阿鲁科尔沁旗| 聊城市| 图们市| 玉屏| 三台县| 舟山市| 民乐县| 界首市| 龙泉市| 信宜市| 嘉义市| 方山县| 新兴县| 玉溪市| 浪卡子县| 龙井市| 丹江口市| 宕昌县| 平昌县| 和田县| 南木林县| 金川县| 海丰县| 清流县| 宁夏| 志丹县| 乐山市| 南昌县| 白河县| 长垣县| 台北县| 沾化县| 呼和浩特市| 永新县| 平谷区| 成武县| 贵港市|