路由在MVC2.属性不显示
本文关键字:显示 属性 MVC2 路由 | 更新日期: 2023-09-27 17:50:58
玩得开心!日志含义在输入URL浏览器中显示路由时出现问题。到网站上的搜索页面。搜索本身工作得很好——传递了"键",显示了找到的列表。控制器中的搜索方法接受要搜索的字符串类型的参数:
public ActionResult SearchAllByKey(string key)
{
//logic
return View(<list_of_found>);
}
在全球。指定路线:
routes.MapRoute(
"Search",
"Search/{key}",
new { controller = "controller_name", action = "SearchAllByKey", key = UrlParameter.Optional }
);
将Edit值从视图发送给方法的表单:
<% using (Html.BeginForm("SearchAllByKey", "controller_name", FormMethod.Post, new { enctype = "multipart/form-data" }))
{%>
<%: Html.ValidationSummary(true) %>
<input type="text" id="keyValue" name="key" />
<input type="submit" value="Go!" />
<% } %>
当你点击"Go!"到一个搜索结果页面,但是URL(输入行浏览器)显示:
http://localhost:PORT/Search
代替:
http://localhost:PORT/Search/SOME_KEY
如何确保在URL-e中可见"键"?提前感谢
你在张贴你的数据。
用FormMethod.Get
改变你的FORM,并确保你的动作只接受get(这是默认的,虽然)
[HttpGet]
public ActionResult SearchAllByKey(string key)
{
//logic
return View(new List<string>());
}
:
要达到你想要的效果,你必须在默认路由之前配置你的路由:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Search",
"{controller}/SearchAllByKey/{key}",
new { controller = "Home", action = "SearchAllByKey", key = UrlParameter.Optional }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
你的FORM应该是这样的:
<% using (Html.BeginForm("Search", "Home", FormMethod.Post))
{%>
<% Html.ValidationSummary(true); %>
<input type="text" id="key" name="key" value="" />
<input type="submit" value="Go!" />
<% } %>
,你必须改变你的ActionResult像这样:
[HttpGet]
public ActionResult SearchAllByKey(string key)
{
//logic
return View(new List<string>());
}
[HttpPost]
public ActionResult Search(FormCollection form)
{
return RedirectToAction("SearchAllByKey", new { key = form["key"] });
}
基本上,您的表单张贴到动作Search
,重定向到SearchAllByKey
。