返回带有模型和查询字符串的视图

本文关键字:字符串 视图 查询 模型 返回 | 更新日期: 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-好的或坏的做法