所以,我试图在列表页面(http://example.com:3480/List)上提交一个实际上是搜索实现的表单。到目前为止,我已经这样做了:
index.cshtml
@using(Html.BeginForm("Search","ListController"))
{
<input id=query type=text name=query />
<input id=btnsearch type=submit value=Search />
}
ListController.cs
[HttpPost]
public ActionResult Search(FormCollection collection)
{
Response.Write("We are here");
// Get Post Params Here
string var1 = collection["query"];
Response.Write(var1);
return View();
}
Global.asax中
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Details",
"Details/{id}/{orderid}",
new { controller = "Details", action = "Index", id = UrlParameter.Optional, orderid = UrlParameter.Optional }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
);
}
单击它后转到http://example.com:3480/ListController/Search
,这似乎很好。
现在我想我需要在Global.aspx中定义路由但不确定。我想要的是在同一个View文件中显示结果,而不是创建一个新文件。
此时我在POST表单
后无法进入Search
方法
答案 0 :(得分:1)
假设您当前只使用默认路由,那么您未达到操作方法的原因是&#34; Controller&#34;您的路线上的后缀是隐含的 - 它不应该是您网址的一部分。
@using(Html.BeginForm("Search","List"))
此外,关于:
我想要的是在同一个View文件中显示结果,而不是创建一个新文件。
通过在View
方法调用中指定视图的名称,您可以轻松地从任何控制器操作返回特定视图:
return View("Index");