MVC不用302跳转Action,内部跳转
原理,在一个Action里面return 另一个Action出去。
public class HomeController : Controller { // GET: Home public ActionResult Index(int? id) { //必须要把Route里的Action改成最终的Action名字,否则造成读取CSHTML错误 ControllerContext.RouteData.Values["Action"] = "TS"; return TS(id); //如果不确定到哪个Action,可以使用反射的方式来跳转 //return this.GetType().GetMethod("TS").Invoke(this,new object[]{id}) as ActionResult; } public ActionResult TS(int? id) { ViewBag.Id = id; return View(); } }
如果连控制器也不确定,可以这么写
ControllerContext.RouteData.Values["Action"] = "Index"; ControllerContext.RouteData.Values["Controller"] = "Test"; Type type = Assembly.GetExecutingAssembly().DefinedTypes.Where(t => t.Name == "TestController").FirstOrDefault(); object obj = Assembly.GetExecutingAssembly().CreateInstance(type.FullName); return obj.GetType().GetMethod("Index").Invoke(obj, null) as ActionResult;
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。