婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > ASP.NET MVC 3仿Server.Transfer效果的實(shí)現(xiàn)方法

ASP.NET MVC 3仿Server.Transfer效果的實(shí)現(xiàn)方法

熱門標(biāo)簽:濮陽外呼電銷系統(tǒng)怎么樣 塔城代理外呼系統(tǒng) 地圖定位圖標(biāo)標(biāo)注 地圖標(biāo)注的公司有哪些 天心智能電銷機(jī)器人 代理接電話機(jī)器人如何取消 400電話辦理哪家性價(jià)比高 地圖標(biāo)注專業(yè)團(tuán)隊(duì) 遂寧市地圖標(biāo)注app

當(dāng)我們?cè)谑褂肁SP.NET MVC實(shí)現(xiàn)頁面跳轉(zhuǎn)的時(shí)候,常用的應(yīng)該是:

Redirect
RedirectToAction
RedirectToRoute
或者在前臺(tái)使用腳本跳轉(zhuǎn)。
但這幾種跳轉(zhuǎn)方式都是基于Get請(qǐng)求的,在某些特定場(chǎng)景下可能并不適用。例如需要傳遞大數(shù)據(jù)量參數(shù)、或者復(fù)雜對(duì)象類型參數(shù)的場(chǎng)景,get方式肯定是有限制的。

在webform里面,有一種服務(wù)器端跳轉(zhuǎn)方式:Server.Transfer,相信大家一定都還記得。這種方式是中止當(dāng)前頁面執(zhí)行,并將執(zhí)行流程轉(zhuǎn)入一個(gè)新的頁面,并使用上一個(gè)頁面創(chuàng)建的應(yīng)答流。 這種方式具有如下的特點(diǎn):
1,地址欄URL不會(huì)發(fā)生變化。
2,上一個(gè)頁面后臺(tái)產(chǎn)生的參數(shù)和對(duì)象可以直接傳遞到新的頁面。
3,減少客戶端對(duì)服務(wù)器的請(qǐng)求。

我們知道,ASP.NET MVC有一個(gè)核心思想,就是“約定勝于配置” ,例如在執(zhí)行完一個(gè)action后,會(huì)到view目錄下根據(jù)controller名稱查找對(duì)應(yīng)的view來進(jìn)行渲染,但是 約定的做法并不意味著不能改變。

對(duì)于ASP.NET MVC而言,可以通過動(dòng)態(tài)改變當(dāng)前Action所渲染的view路徑,來實(shí)現(xiàn)類似的效果。

渲染非常規(guī)路徑的View

第一步,先實(shí)現(xiàn)一個(gè)自定義的ViewEngine:

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

第二步,實(shí)現(xiàn)一個(gè)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,在服務(wù)器端進(jìn)行跳轉(zhuǎn),實(shí)現(xiàn)類似Server.Transfer的效果。 當(dāng)然,以上只是一個(gè)簡單的示例,你完全可以做的更優(yōu)雅一點(diǎn),實(shí)現(xiàn)更靈活的路徑配置。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

您可能感興趣的文章:
  • 關(guān)于Server.Transfer(URL)和UrlReWrite的一個(gè)突發(fā)奇想
  • Server.Transfer,Response.Redirect的區(qū)別
  • asp.net 頁面轉(zhuǎn)向 Response.Redirect, Server.Transfer, Server.Execute的區(qū)別
  • asp.net中Response.Redirect與Server.Transfer的區(qū)別分析

標(biāo)簽:河南 重慶 汕頭 吉林 本溪 宜春 麗江 婁底

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET MVC 3仿Server.Transfer效果的實(shí)現(xiàn)方法》,本文關(guān)鍵詞  ASP.NET,MVC,仿,Server.Transfer,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET MVC 3仿Server.Transfer效果的實(shí)現(xiàn)方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于ASP.NET MVC 3仿Server.Transfer效果的實(shí)現(xiàn)方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 如皋市| 额尔古纳市| 洪雅县| 威宁| 抚州市| 鸡东县| 松原市| 全椒县| 建昌县| 吉水县| 石河子市| 闵行区| 乾安县| 东阿县| 绿春县| 郑州市| 湛江市| 天峨县| 临邑县| 梁河县| 正定县| 靖远县| 贵港市| 凌海市| 南陵县| 抚顺市| 花莲县| 雅安市| 虎林市| 天等县| 晋州市| 合肥市| 阿克陶县| 惠安县| 邹城市| 六安市| 兴海县| 佛教| 礼泉县| 苍山县| 友谊县|