asp.net-mvc - 在同一页面中显示搜索表单及其结果的最佳方式?

标签 asp.net-mvc asp.net-mvc-3

假设我有一个带有文本框的简单搜索表单。提交表单后,我将文本框的内容发送到存储过程,该过程将结果返回给我。我希望结果显示在表单所在的同一页面上,除了它的正下方。

现在我正在执行以下操作,但它并没有完全按照我想要的方式进行:

我的 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/

相关文章:

asp.net-mvc - 最新的 ASP.Net MVC 3 请求处理管道图?

asp.net-mvc-3 - ASP.NET MVC 3-如何处理Global.asax中的错误?

asp.net-mvc - 将 RequestVerificationToken 从 Angular js 传递到 mvc Controller

javascript - 长时间运行的异步 API 方法

c# - IEnumerable 模型中的多个 DropDownList

asp.net-mvc-3 - Entity Framework 将 float 数据类型映射为 double

asp.net-mvc-3 - MVC3 EditorForModel 下拉菜单

asp.net-mvc - MVC RequireHttps 属性毫无值(value)?

css - 使用数据库值 MVC 3 更改背景

asp.net-mvc-3 - CaSTLe Windsor Log4Net 问题