通过重定向到路由结果内容进行路由为空
本文关键字:路由 结果 重定向 | 更新日期: 2023-09-27 17:56:30
我有一个奇怪的属性,我有一个属性可以执行下面看到的工作,但奇怪的部分是控制器命中/接受,点得到模型。
return new RedirectToRouteResult(new RouteValueDictionary(new
{
controller = controller,
action = action,
model = new LoginUserModel()
{
flowPartial = true,
gotoController = (string)rData.Values["controller"],
gotoAction = (string)rData.Values["action"],
formData = formDatas
}
}));
此处模型为空
public ActionResult LoadPartialWithModel(LoginUserModel model)
{
return PartialView("~/Views/Partials/_Login.cshtml", model);
}
我认为
这行不通。重定向结果会将 HTPP 301 发送到浏览器,其中包含一个新 url,然后浏览器将作为 GET 请求请求该 URL。无法将复杂模型编码为 get 请求的参数。这在帖子中的模型绑定中得到了支持,但如果您查看细节,它会变得相当长。您可以做的一件事是让第二种方法接受简单的参数
public ActionResult LoadPartialWithModel(bool flowPartial, string controller, ....)
然后在重定向到路由中将它们分别作为路由值传递。这应该创建一个漂亮的 URL,其中包含浏览器可以重定向到的查询字符串中的参数
这是假设您需要通过浏览器,因为如果不需要,则可以直接调用其他控制器方法
return LoadPartialWithModel (new LoginUserModel()
{
flowPartial = true,
gotoController = (string)rData.Values["controller"],
gotoAction = (string)rData.Values["action"],
formData = formDatas
});