【发布时间】:2011-05-04 17:59:36
【问题描述】:
假设我有一个带有文本框的简单搜索表单。在提交表单后,我将文本框的内容发送到一个存储过程,该过程将结果返回给我。我希望结果显示在与表单相同的页面上,除了它的下方。
现在我正在做以下事情,但它并没有完全按照我想要的方式工作:
我的 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);
这是我的“搜索结果”视图:
@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 中的一些最佳实践。
【问题讨论】: