2

我有一个带有表单的 MVC3 视图,我想通过查询字符串传入一个参数。这是我的表格

@using (Html.BeginForm("LogOn", "Account", new { db = @Request.QueryString["db"] }, FormMethod.Post))

这是我的控制器

[HttpPost]
public ActionResult LogOn(LogOnModel model,string db)

当我单击我的登录按钮并单步执行代码时,参数 db 为空。我像这样传递它:

  http://localhost:64632/?db=someValue

我的路线如下所示:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{db}", // URL with parameters
        new { controller = "Account", action = "LogOn", db = UrlParameter.Optional           } // Parameter defaults
);

我究竟做错了什么?

4

4 回答 4

1

有用。我也在做同样的事情。我可以在 http 帖子上检索查询字符串值:Request["queryparametername"]

于 2012-05-23T22:23:02.420 回答
1

如果这是您拥有的唯一路线,那么您当前所在的页面大概看起来像“/controller/action/dbValue”。在这种情况下,

@Request.QueryString["db"]

不会获取任何东西,因为 db 是一个路由值,它不是查询字符串的一部分。你可以使用

@ViewContext.RouteData.Values["db"]

反而。

于 2012-05-23T21:28:05.023 回答
1

您的路线预计db将成为 url 中的令牌:

http://localhost:64632/Account/LogOn/someValue

您可以从控制器中的查询字符串中获取值并将 db 参数存储在 a 中ViewBag,它将在您的表单上可用。

于 2012-05-23T20:46:48.080 回答
0

好吧,这是一个获取方法链接:“http://localhost:64632/?db=someValue”

并且您使用了 HttpPost 属性。

于 2012-05-23T20:51:00.680 回答