我正在尝试从具有查询字符串和模型
的控制器返回查看return View("BillingReport.aspx/?report=" + fc["report_selector"], bilDet);
但是这给了我一个运行时错误的页面找不到,因为它在url的末尾附加了.aspx等。
RedirectToAction()
没有选择这样做
有没有办法做到这一点或mvc3限制我们使用查询字符串或模型
答案 0 :(得分:2)
MVC不支持你要找的东西,
但我不明白你为什么要用ModelValues重定向到一个URL。
任何重定向都是GET请求,因此您可以构造模型并从该操作返回View。
View()需要一个与之关联的视图名称和模型。
Redirect()或RedirectToAction()用于将url重定向到另一个控制器/操作。因此,您无法传递模型。即使您尝试传递模型,它也会将模型属性作为查询字符串参数附加。
答案 1 :(得分:1)
以下是您希望使用模型和查询字符串的原因:查询字符串允许您为用户提供使用状态信息保存URL的方法。该模型允许您传递大量非平坦数据。所以这里我想如何在MVC 5中做到这一点(可能不适用于旧版本,但可能适用):
对视图使用2个操作而不是1。使用第一个通过RedirectToAction设置查询字符串。使用第二个操作将模型返回到视图。并且您通过会话状态将模型从第一个操作传递到第二个操作。以下是示例代码:
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"]);
}
答案 2 :(得分:0)
我同意Manas的回答,如果我是你,我会考虑在可能的情况下更改设计。
作为旁注,可以采用以下技术:
TempData["bilDet"] = bilDet;
return RedirectToAction(....); // your controller, action etc.
在操作中,您可以检索TempData。 TempData将自动删除。