RedirectToAction、Redirect、Return View的区别

RedirectToAction和View()跳转及其参数

1、return RedirectToAction(),重定向到括号内的action控制的页面。可以传递参数。

比如:return RedirectToAction(_cViewPage, new {taskType=taskType });          //taskType为要传递的参数。

这种形式的传递参数,参数放在了ViewData里面,所以,前台获取参数的方式为:

<input id="taskType" name="taskType" type="hidden" value='@ViewData["taskType"]' />

或者

<input id="taskType" name="taskType" type="hidden" value='@Request.Params["taskType"]' />

2、return View() 跳转到当前页面。

若需要传递参数,可使用ViewData和ViewBag两种形式,只不过在前台获取参数的方式不同而已。

若使用ViewBag的方式传递,则:

后台:ViewBag.taskType = taskType;

前台:<input id="taskType" name="taskType" type="hidden" value='@ViewBag.taskType' />

Redirect和Return View 的区别

1、 Redirect是让浏览器重定向到新的地址;Return View是让服务器把指定的cshtml的内容运行渲染后给到浏览器。
2、 Redirect浏览器和服务器之间发生了两次交互;Return View浏览器和服务器之间发生了1次交互。
3、 Redirect由于是两次请求,所以第一次设置的ViewBag等这些信息,在第二次时取不到;而View则是在同一个请求中,所以ViewBag信息可以取到。
4、如果用Redirect,则由于是新的对Controller/Action的请求,所以对应的Action会被执行到。如果用View,则是直接拿某个View去显示,对应的Action是不执行的。

什么情况用View?
服务器端产生数据,想让一个View去显示的;

什么情况用Redirect?
让浏览器去访问另外一个页面的时候。

RedirectToAction和Return View的区别

RedirectToAction()是让客户端重定向,是一个新的Http请求,所以无法读取ViewBag中的内容;
Return View()是一次服务器一次处理中的转移。

Redirect和RedirectToAction的区别
RedirectToAction是从一个Action调到另一个Action,在后台做跳转。
Response.Redirect是给返回前台返回应答,前台根据应答的url进行跳转。
一个是后台,一个是前台。

MVC中RedirectToAction和Redirect

RedirectToAction可以从当前的action中调用其他的action(可以跨controller或跨域)结果

demo:

return RedirectToAction("wechatLogon", "account", new { name = vid, password = salt, automaticCheck = "on", ismobile = true });

Redirect有2种:
一种是System.Web.Mvc.Controller下的,重定向结果对象,在action中可直接调用Redirect

一种是System.Web.HttpResponseBase下的普通意义上的跳转,这个要注意

关于,RedirectToAction,说道它,就不得不提RedirectToRoute,用法差不多:

demo参考:http://www.cnblogs.com/xzitluyang/p/6042245.html

重载列表
名称 说明
RedirectToAction(String)     使用操作名称重定向到指定的操作。
RedirectToAction(String, Object) 使用操作名称和路由值重定向到指定的操作。
RedirectToAction(String, String) 使用操作名称和控制器名称重定向到指定的操作。
RedirectToAction(String, RouteValueDictionary) 使用操作名称和路由字典重定向到指定的操作。
RedirectToAction(String, String, Object) 使用操作名称、控制器名称和路由字典重定向到指定的操作。
RedirectToAction(String, String, RouteValueDictionary) 使用操作名称、控制器名称和路由值重定向到指定的操作。

转载自:

https://blog.csdn.net/wangfangxu17/article/details/84795343

https://blog.csdn.net/a_lllll/article/details/89918249

https://blog.csdn.net/Joyhen/article/details/78009466

发布了35 篇原创文章 · 获赞 2 · 访问量 1377

猜你喜欢

转载自blog.csdn.net/weixin_41001497/article/details/104025914