按下提交按钮后如何重定向到下一页?

时间:2016-01-11 17:39:42

标签: c# asp.net-mvc

我正在使用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();
        }
    }
}

总而言之,如何让提交按钮将用户重定向到结果页面?

2 个答案:

答案 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>
}