首頁  >  文章  >  後端開發  >  MVC頁面重定向的ASP程式碼講解

MVC頁面重定向的ASP程式碼講解

Y2J
Y2J原創
2017-05-05 12:00:061105瀏覽

這篇文章主要為大家詳細介紹了ASP.NET MVC頁面重定向的相關資料,具有一定的參考價值,有興趣的小夥伴們可以參考一下

在asp.net中頁面重定向:Server.Execute("m2.aspx"); 伺服器儲存此頁轉向前的資料後,使頁面轉向到m2.aspx執行, 再返回本頁繼續執行.再將三者結果合併後傳回瀏覽器.
以上都是伺服器端頁面轉向所以瀏覽器不出現頁更改記錄(顯示的位址不會改變)。因此,如果用戶刷新此頁,也許會出現一些其它意外情況. 此類頁轉向,可完成一些其它功能,比如訪問到前一頁中的服務端控件

一、Response.Redirect:

#當瀏覽器請求aspx頁面時,碰到Redirect(url)方法, 相當於告訴瀏覽器,你先需訪問某頁,於是瀏覽器再向伺服器發送一個到此頁面的請求。重定位是透過瀏覽器執行的,在伺服器和瀏覽器之間會產生額外的往返過程。在網路狀況不是很好的情況下,兩次請求會大大的降低應用程式的反應速度,甚至佔用多餘的頻寬。

總結, 在網路狀態較好的情況下,Redirect(url)方法效率最高!! Server.Transfer方法和Server.Execute方法最靈活!! Server. Execute方法佔用資源最多。

二、跳到頁面asp.net提供的三種方法比較

#1 response.redirect 這個跳轉頁面的方法跳轉的速度不快,因為它要走2個來回(2次postback),但他可以跳到任何頁面,沒有網站頁面限制(即可以由雅虎跳到新浪),同時不能跳過登入保護。但速度慢是最大缺陷! redirect跳轉機制:首先是發送一個http請求到客戶端,通知需要跳到新頁面,然後客戶端在發送跳轉請求到伺服器端。需要注意的是跳轉後內部空間保存的所有資料資訊將會遺失,所以需要用到session
2 server.transfer 速度快,只需要一次postback ,但是。 。 。 。他必須是在同一個網站下,因為它是server的一個方法。另外,他能跳過登入保護。你可以寫個小程式試試:設計一個由頁面一到頁面二的跳轉,但要進入到頁面二需要登錄,form認證,但如果跳轉語句使用transfer的話,那就不會彈出登錄頁面了。這個方法的重定向請求是發生在伺服器端,所以瀏覽器的url位址仍然保留的是原始頁面的位址!
3 sever.execute 這個方法主要是用在頁面設計上面,而且他必須是跳到同一網站下的頁面。這個方法是需要將一個頁面的輸出結果插入到另一個aspx頁面的時候使用,大部分是在表格中,將某一個頁面類似於嵌套的方式存在於另一個頁面。

三、如何選擇頁面重新導向方法

#

在asp.net中有四種頁面跳轉導覽方式,該如何為你的頁面選擇一個呢?
·如果要讓使用者來決定何時轉換頁面以及前往哪一個頁面,超級連結最適合。
·如果要用程式來控制轉換的目標,但轉換的時機由使用者決定,使用Web伺服器的HyperLink控件,動態設定其NavigateUrl屬性
·如果要把使用者連接到另一台伺服器上的資源,使用Response.Redirect。
·用Response.Redirect把使用者連接到非ASPX的資源,例如HTML頁面。
·需要把查詢字串當作url一部分保留傳給伺服器的時候,因為其他2種方法不能做到2次postback,把資料先帶回伺服器,使用Response.Redirect。
·如果要將執行流程轉入同一Web伺服器的另一個ASPX頁面,應使用Server.Transfer而不是Response.Redirect,因為Server.Transfer能夠避免不必要的網路通信,從而獲得更好的效能和瀏覽效果。
·如果要擷取一個ASPX頁面的輸出結果,然後將結果插入另一個ASPX頁面的特定位置,則使用Server.Execute。
·如果要確保HTML輸出合法,請使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。
順便提一下,如何使用redirect方法在查詢字串中使用漢字,因為經常的情況是出現亂碼,原因是url不支援漢字。這時候需要轉換:
string message =server.urlencode("歡迎");
先轉換,在使用查詢字串
response .redirect("webform2.aspx?msg="+message);
關於Server.Execute
這種頁面導航方式類似於針對ASPX頁面的一次函數調用,被調用的頁面能夠存取發出調用頁面的表單資料和查詢字串集合,所以要把被調用頁面Page指令的EnableViewStateMac屬性設定成False。
預設情況下,被呼叫頁面的輸出追加到目前應答流。但是,Server.Execute方法有一個重載的方法,允許透過一個TextWriter物件(或它的子對象,例如StringWriter物件)來取得被呼叫頁面的輸出,而不是直接追加到輸出流,這樣,在原始頁面中可以方便地調整被呼叫頁面輸出結果的位置。

MVC頁面重新導向很簡單,主要有以下幾種形式:

 # 1.Response.Redirect();方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcDemo.Controllers
{
 [HandleError]
 public class HomeController : Controller
 {
  public ActionResult Index()
  {
   ViewData["Message"] = "欢迎使用 ASP.NET MVC!";
   Response.Redirect("User/News");
   return View();
  }

  public ActionResult About()
  {
   return View();
  }
 }
}

2.Return  Redirect();方法

#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcDemo.Controllers
{
 [HandleError]
 public class HomeController : Controller
 {
  public ActionResult Index()
  {
   ViewData["Message"] = "欢迎使用 ASP.NET MVC!";
   return Redirect("User/News");
  }

  public ActionResult About()
  {
   return View();
  }
 }
}

3.Return RedirectToAction();方法

此方法有兩種重載

RedirectToAction(“ActionName”);//該方法直接寫入頁面,前提必須是在改控制器下問頁如前面的Index .aspx,和About.aspx

RedirectToAction(“ActionName”,"ControllerName")//該方法直接寫入ActionName和ControllerName,前提必須是在改控制器下問頁如前面的Index.aspx ,和About.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcDemo.Controllers
{
 [HandleError]
 public class HomeController : Controller
 {
  public ActionResult Index()
  {
   ViewData["Message"] = "欢迎使用 ASP.NET MVC!";
   return RedirectToAction("News","User");
  }

  public ActionResult About()
  {
   return View();
  }
 }
}

【相關推薦】

1. ASP免費影片教學

2. ASP教學

3. 李炎恢ASP基礎影片教學

#

以上是MVC頁面重定向的ASP程式碼講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn