从搜索者(从视图)发送短语(变量)到控制器,asp.net mvc

时间:2015-05-12 07:34:37

标签: c# .net asp.net-mvc razor

我试图在asp.net中创建搜索者。我对此非常了解。我试图在视图中创建并发送到控制器变量,该变量具有在搜索器中写入的文本。在那一刻,我有这样的感觉 - > 我的问题是,在何处以及如何创建和发送变量并将其数据写入搜索者?

布局

form class="navbar-form navbar-left" role="search">
            @using (Html.BeginForm("Index", "Searcher", FormMethod.Post, new { phrase = "abc" }))
            {
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="Wpisz frazę...">
                </div>
                <button type="submit" class="btn btn-default">@Html.ActionLink("Szukaj", "Index", "Searcher")</button>
            }
        </form>

控制器

 public class SearcherController : ApplicationController
{
    [HttpGet]
    public ActionResult Index(string message)
    {
        ViewBag.phrase = message;
        getCurrentUser();
        return View();
    }

}

查看

@{
ViewBag.Title = "Index";
 }

<h2>Index</h2>
<ul>
    <li>@ViewBag.message</li>
</ul>

1 个答案:

答案 0 :(得分:3)

您错过了MVC的关键部分 - &gt; 模型

让我们先创建一个:

public class SearchModel
{
    public string Criteria { get; set; }
}

然后让我们更新你的&#34;布局&#34;查看(不知道你为什么在表格中有表格?):

@model SearchModel

        @using (Html.BeginForm("Index", "Searcher", FormMethod.Post, new { phrase = "abc" }))
        {
            <div class="form-group">
                @Html.EditorFor(m => m.Criteria)
            </div>
            <button type="submit" class="btn btn-default">@Html.ActionLink("Szukaj", "Index", "Searcher")</button>
        }

然后你的行动提供了这个观点:

[HttpGet]
public ActionResult Index()
{
    return View(new SearchModel());
}

然后你的帖子方法是:

[HttpPost]
public ActionResult Index(SearchModel model)
{
    ViewBag.phrase = model.Criteria;
    getCurrentUser();
    return View();
}