我有一个带有表单的MVC3视图,我想通过查询字符串传入一个参数。继承人我的表格
@using (Html.BeginForm("LogOn", "Account", new { db = @Request.QueryString["db"] }, FormMethod.Post))
继承我的控制器
[HttpPost]
public ActionResult LogOn(LogOnModel model,string db)
当我单击“登录”按钮并单步执行代码时,param db为null。我像这样传递它:
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
);
我做错了什么?
答案 0 :(得分:1)
您的路由期望db
成为网址中的标记:
http://localhost:64632/Account/LogOn/someValue
您可以从控制器中的查询字符串中获取值,并将db参数存储在ViewBag
中,它将在您的表单中提供。
答案 1 :(得分:1)
如果这是你唯一的路线,那么你当前所在的页面可能就像“/ controller / action / dbValue”。在这种情况下,
@Request.QueryString["db"]
不会获取任何内容,因为db是路由值,它不是查询字符串的一部分。你可以用
@ViewContext.RouteData.Values["db"]
代替。
答案 2 :(得分:1)
有效。我也在做同样的事情。我可以在http帖子Request["queryparametername"]
答案 3 :(得分:0)
好吧,这是一个get方法链接:“http:// localhost:64632 /?db = someValue”
并且您使用了HttpPost属性。