您的位置:首页 > 编程语言 > ASP

ASP.Net MVC Action重定向跳出Controller和Area

2016-04-07 09:55 246 查看

1.重定向方法简介

[HttpPost]
public ActionResult StudentList( string StudName, string studName, DateTime BirthDay, FormCollection form, string controller,
string Action, StudentModels student)
{
//其中StudName为aspx页面中标签的name属性(StudName不区分大小写)
//其中BirthDay为页面中标签的name属性(类型可自己指定【需转换成功才可以】,这里为DateTime)同样BirthDay不区分大小写
//其中controller,Action为路由信息(controller,Action不区分大小写)
//FormCollection包含了post回来的信息 通过form[]来取值
//如果使用强类型绑定 可通过实体回传值 这里实体为StudentModels
//同样可以使用Request.Form[] Request.QueryString[] Request[] 来取值 不过此Request非WebForm中的Request
这里的Request是RequestBase抽象类的实例 WebForm中Request是封装类 HttpRequest的实例

#region 到要经过执行controller里方法后 显示出页面。
//return RedirectToAction("Index");//可跳出本controller
//return RedirectToRoute(new {controller="Home",action="Index"});//可跳出本controller
//Response.Redirect("Index");//只能使用本controller下的方法名称。返回值为void
//return Redirect("Index");//只能使用本controller下的方法名称。
#endregion

#region 直接显示出对应的页面 不经过执行controller的方法。
//return View("Index");//非本方法
//return View("~/Views/Home/Index.aspx");//这种方法是写全路径
#endregion
return View();
}

2.跳出Controller和Area

  在上面的代码中,使用RedirectToRoute(new { contoller="Home", action="Index" })方法可以跳出控制器,访问其他控制器的action,但是,如果是别的Area里面的控制器Action呢?能不能访问呢?答案是:可以。

  这样写就可以:RedirectToRoute(new { contoller="Home", action="Index" , area="MyArea"})。

3.传递参数

  如果要传递参数应该怎么写?

  方法一:

  假设目标Controller里面action参数列表为简单类型,例如:Index(stringname),那么上面的方法可以这样写:RedirectToRoute(new { controller="Home", action="Index", area="MyArea",
name="Argo"})。但是这种方法貌似只能传递基本类型,对于自定义的Class或者Model,不能传递。

  方法二:

通过TempData传递:
//本action中代码</span>
this.TempData["name"]="Argo";
RedirectToRoute(new { contoller="Home", action="Index" , area="MyArea"});
//目标action中代码</span>
string name=TempData["name"].ToString();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: