微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

现在我正在做以下事情,但它并没有按照我想要的方式运作:

我的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中的一些最佳实践.

解决方法

您可以在ViewData对象中返回结果,然后仅在视图上显示它是否为null.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐