MVC控制器执行重定向

  前面了解过了动作方法可以返回一个视图,其中出现了会去渲染非默认动作方法名为名称的视图,这种情况下,其实可以重定向到渲染该视图的动作方法上去,而不是由自己去渲染该视图。

说的有点繁琐,可以这样理解

return View("Nice");
//可以使用==>
return RedirectToAction("Nice");

或者

return View("Nice","Good");
==>
return RedirectToAction("Nice","Good");

结果都是一样的,除非Nice的Action中有一些需要传递给Nice视图的数据

对于这个重定向,我本人目前还是有些不是很理解“临时重定向”和“永久重定向”RedirectToActionPermanent
不得不说MVC的控制器辅助方法真的很多,一个重定向居然又分为

  1.RedirectToRoute//定向到路由系统的URL

  2.RedirectToAction//定向到动作方法

其实这两个辅助方法做的都是同样的事,都是将当前的路由重定向到另一个动作方法,然后去渲染一个视图返回给用户。

不过现在问题出来了,如果是重定向了的话,浏览器是会递交一个全新的Http请求的,这意味着我们是去了对原先请求细节的方法,意思就是我们不能访问这个动作方法中的数据了,假如我们就是想要保存重定向之前

动作方法中的数据该怎么办,那么我们可以使用TempData特性,该特性灰常神奇,不像一个全局变量一样,应用程序关闭才会被释放,它是当第一次被使用读取以后,就会被标记删除,然后在请求被处理完成以后正式被删除,是不是很Nice呢,不占用多少内存,又可以跨请求传递数据,又可以自动清除内存~~~

使用方法如下

public RedirectToRouteResult Index(){
  TempDate["Nice"] = "Terry";
  TempData["Reason"] = "中奖啦";
  return RedirectToAction("Nice");
}

public ViewResult Nice(){
  Nice nice = new Nice{Name=TempData["Nice"],Reason=TempData["Reason"]};
  return View(nice);
}

 如果你还不死心,想要这个跨域传递的数据再保留多一会,可以使用

TempData.Keep("Nice");

这样你的nice数据就可以再保留一次,下次读取完毕,请求完成还是会被删除的,如果你仍旧不想被删除,那我只能推荐你使用session了。。。

转载于:https://www.cnblogs.com/Terry-Li/p/3784273.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值