返回带有模型和查询字符串的视图
本文关键字:字符串 视图 查询 模型 返回 | 更新日期: 2023-09-27 18:25:40
我正试图从一个同时具有querystring和模型的控制器返回视图
return View("BillingReport.aspx/?report=" + fc["report_selector"], bilDet);
但这给了我一个运行时错误,即找不到页面,因为它在url的末尾添加了.aspx等。
RedirectToAction()
没有这样做的选项。
有没有办法做到这一点,或者mvc3是否限制我们使用查询字符串或模型
MVC不支持您正在寻找的东西,
但是我不明白你为什么要重定向到一个有ModelValues的URL。
任何重定向都是一个GET请求,因此您可以构造模型并从该操作返回View。
View()需要一个与之关联的视图名称和模型。
Redirect()或RedirectToAction()用于将url重定向到另一个控制器/操作。所以你不能通过一个模型。即使您尝试传递模型,它也会将模型属性附加为querystring参数。
以下是您想要使用模型和querystring的原因:querystring允许您为用户提供保存带有状态信息的URL的方法。该模型允许您传递大量未展开的数据。因此,我认为如何在MVC 5中做到这一点(可能不适用于旧版本,但可能适用):
对视图使用2个操作而不是1个操作。使用第一个通过RedirectToAction设置querystring。使用第二个操作将模型返回到视图。然后通过会话状态将模型从第一个动作传递到第二个动作。以下是示例代码:
public ActionResult Index(string email){
Session["stuff"]=Load(email);
return RedirectToAction("View1action", new { email = email, color = "red" });
}
public ActionResult View1action(string email){
return View("View1",(StuffClass)Session["stuff"]);
}
我同意马纳斯的回答,如果我是你,如果可能的话,我会考虑改变设计
附带说明一下,以下技术是可能的:
TempData["bilDet"] = bilDet;
return RedirectToAction(....); // your controller, action etc.
在操作中,您可以检索TempData。TempData将自动删除。
但也可以看看:ASP.NET MVC-TempData-好的或坏的做法