使用的一个限制RedirectToAction("actionName", {object with properties})
是 RedirectToAction() 没有接受的重载RedirectToAction(ActionResult(), {object with properties})
,因此您被迫使用魔术字符串作为操作名称(可能还有控制器名称)。
如果您使用T4MVC 库,它包含两个流畅的 API 帮助器方法 (AddRouteValue(...)
和AddRouteValues(...)
),使您能够轻松添加单个查询字符串参数、对象的所有属性或整个 Request.QueryString。您可以在 T4MVC 自己的 ActionResult 对象上或直接在 RedirectToAction() 方法上调用这些方法。当然,T4MVC 就是要摆脱魔术字符串!
举个例子:假设你想重定向到一个非认证请求的登录页面,并将最初请求的 URL 作为查询字符串参数传递,这样你就可以在成功登录后跳转到那里。以下任一语法示例都可以使用:
return RedirectToAction(MVC.Account.LogOn()).AddRouteValue(@"returnUrl", HttpUtility.UrlEncode(Request.RawUrl));
或者
return RedirectToAction(MVC.Account.LogOn().AddRouteValue(@"returnUrl", HttpUtility.UrlEncode(Request.RawUrl)));