Предположим, у меня есть простая форма поиска с текстовым полем. И после отправки формы я отправляю содержимое текстового поля в хранимую процедуру, которая возвращает мне результаты. Я хочу, чтобы результаты отображались на той же странице, где была форма, за исключением чуть ниже нее.
Сейчас я делаю следующее, но не получается так, как я хочу:
Вид "Index" моего SearchController
@using (Html.BeginForm("SearchResults", "Search", FormMethod.Post, new { @class = "searchform" }))`{
<fieldset>
<legend>Name</legend>
<div class="editor-label">
@Html.Label("Search")
</div>
<div class="editor-field">
@Html.TextBox("Name")
</div>
<input type="submit" value="Search" class="formbutton" />
</fieldset>
@{ Html.RenderPartial("SearchResults", null);
Это мой "SearchResults" Вид:
@model IEnumerable<MyProject.Models.spSearchName_Result>
<table>
@foreach (var item in Model)
{
<tr>
<td>
@item.Name
</td>
</tr>
}
</table>
Это мой контроллер:
// GET: /Search/SearchResult
[HttpPost]
public ActionResult SearchResult(FormCollection collection)
{
var result = myentity.spSearchName(collection["Name"]);
return PartialView("SearchResults", result);
}
Может показаться, что результаты отображаются только на совершенно новой странице (не внедряется как частичное представление), или я получаю сообщение об ошибке при загрузке страницы поиска из-за отсутствия результатов (поскольку я не искал еще).
Есть ли лучший способ добиться того, что я пытаюсь сделать? Я чувствую, что иду против некоторых из лучших практик в MVC.