假设我有一个带有文本框的简单搜索表单。在提交表单时,我将文本框的内容发送给存储过程,该存储过程将结果返回给我。我希望结果显示在表单所在的同一页面上,除了下面的页面。在同一页面显示搜索表单及其结果的最佳方式?
现在我做以下,但它不工作正是我想要的方式:
“索引”我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);
这是我的“SearchResult所”观点:
@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中的一些最佳实践。