MVC页面重定向'页面跳转http://blog.csdn.net/lonestar555/article/details/7046717
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();
- }
- }
- }
asp.net
mvc中在Filter中跳转千万不要使用Response.Redirect
如题,如果在Filter中用Response.Redirect,虽然URL是跳转了,但是之后的Filter和Action还是会执行,不仅浪费资源,还会产生一些不必要的错误,或许,这些错误仅在你的错误日志中能看到。
在Filter中错误使用跳转如下:
- public class AnchorFilter : ActionFilterAttribute
- {
- public override void OnActionExecuting(ActionExecutingContext filterContext)
- {
- if (!string.IsNullOrEmpty(filterContext.HttpContext.Request.QueryString["r_Anchor"]))
- {
- filterContext.HttpContext.Response.Redirect(string.Format("{0}#{1}",
- filterContext.HttpContext.Request.Url.
- AbsolutePath,
- filterContext.HttpContext.Request.
- QueryString["r_Anchor"]));
- return;
- }
- base.OnActionExecuting(filterContext);
- }
- }
filterContext.HttpContext.Response.Redirect (string.Format("{0}#{1}",
filterContext.HttpContext.Request.Url.
AbsolutePath,
filterContext.HttpContext.Request.
QueryString["r_Anchor"]));
filterContext.HttpContext.Response.Redirect 就会产生后遗症,正确使用应该是:
filterContext.Result = new RedirectResult(string.Format("{0}#{1}",
filterContext.HttpContext.Request.Url.
AbsolutePath,
filterContext.HttpContext.Request.
QueryString["r_Anchor"]));
正确代码:
- public class AnchorFilter : ActionFilterAttribute
- {