我试图在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>
答案 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();
}