假设我有一个带有文本框的简单搜索表单。提交表单后,我将文本框的内容发送到存储过程,该过程将结果返回给我。我希望结果显示在表单所在的同一页面上,除了它的正下方。
现在我正在执行以下操作,但它并没有完全按照我想要的方式进行:
我的 SearchController 的“索引” View
@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);
这是我的“搜索结果” View :
@model IEnumerable<MyProject.Models.spSearchName_Result>
<table>
@foreach (var item in Model)
{
<tr>
<td>
@item.Name
</td>
</tr>
}
</table>
这是我的 Controller :
// GET: /Search/SearchResult
[HttpPost]
public ActionResult SearchResult(FormCollection collection)
{
var result = myentity.spSearchName(collection["Name"]);
return PartialView("SearchResults", result);
}
我似乎只能让结果显示在一个全新的页面上(不是作为局部 View 嵌入),或者在我加载搜索页面时出现错误,因为没有结果(因为我还没有搜索过) .
有没有更好的方法来实现我想要做的事情?我觉得我违背了 MVC 中的一些最佳实践。
最佳答案
您可以在 ViewData
中返回结果对象然后仅在 View 上显示它如果是 not null
.
关于asp.net-mvc - 在同一页面中显示搜索表单及其结果的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5887799/