我正在使用ASP.NET MVC 4和C#创建一个站点。主页面是一个带有提交按钮的搜索栏,标签为" search"。我希望用户能够输入音乐艺术家并按下"搜索"按钮。然后该网站应该进入"结果"页面上有结果。
按下搜索按钮后,我无法访问结果页面。
我的观点Index.cshtml表单如下所示:
<form method="post" class="form-inline">
<div class="row">
<div class="col-md-1" style="min-width:300px">
<input type="text" name="Artist" class="form-control box-shadow--4dp" placeholder="Artist Name" />
</div>
<div class="col-md-2">
<input type="submit" class="btn btn-default box-shadow--4dp" value="Search" />
</div>
</div>
</form>
我的HomeController.cs看起来像这样:
namespace Task2.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
// edit
[HttpPost]
public ActionResult Index(string Artist)
{
return RedirectToAction("Result", "Home");
}
public ActionResult Contact()
{
ViewBag.Message = "For more information you can contact me using the form below.";
return View();
}
public ActionResult Result(string Artist)
{
ViewBag.Message = Artist;
return View();
}
}
}
总而言之,如何让提交按钮将用户重定向到结果页面?
答案 0 :(得分:3)
当前设置HTML的方式,您的表单会POST到控制器的Index
方法。
要进行重定向,您可以这样做:
[HttpPost]
public ActionResult Index(string searchTerm)
{
//handle your search stuff here...
return RedirectToAction("Results", "Home");
}
但是,您可以将当前表单包装在HTML.BeginForm
中并发布到索引方法以外的特定操作方法 - 也许是搜索操作方法,然后重定向到结果,传入结果集合例如。
答案 1 :(得分:3)
如果您希望将输入作为查询字符串,则只需将表单方法更改为GET
即可。它会将您重定向到结果页面,输入为查询字符串。
@using (Html.BeginForm("Result","Home",FormMethod.Get,new {@class= "form-inline" }))
{
<div class="row">
<div class="col-md-1" style="min-width:300px">
<input type="text" name="Artist" class="form-control box-shadow--4dp" placeholder="Artist Name" />
</div>
<div class="col-md-2">
<input type="submit" class="btn btn-default box-shadow--4dp" value="Search" />
</div>
</div>
}