繁体   English   中英

我如何在MVC Razor的同一页面内搜索

[英]How can i do search inside same page in MVC Razor

如何在MVC Razor的同一页面内搜索? 例如; 如果我搜索return,我的页面在打开时没有任何结果。我必须使用IEnumerable<model>来获取结果,但是如果我使用IEnumerable<model>来获取空白页,则会收到错误消息。

搜索页面

@model IEnumerable<SearchResult>
<span>Search results:</span>
<p>
    @foreach(var item in Model)
    {
       @item.Title<br/>
    }
</p>

对于这种情况,您需要返回空模型。 例如在控制器代码中:

public ActionResult Test()
{
    // some actions
    return View(new List<SearchResult>());
}

在这种情况下,它将发送空模型,并且不会失败。

您可以创建一个包含搜索属性和结果列表的模型。

模型

Public class MySearchModel{
public string searchInput { get; set; }
public List<mySearchResultModel> resultList { get; set; }}

调节器

  public ActionResult Index()
    {
        var model = new MySearchModel(); 
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MySearchModel model)
    {

        model.searchInput //filter
            model.mySearchResultModel = //query where filter
        return View(model);
    }

视图

@model MySearchModel

<div>
 @Html.LabelFor(x => x.searchInput)
 @Html.TextBoxFor(x => x.searchInput)
</div>

<span>Search results:</span>
 @foreach (var item in Model.mySearchResultModel){
    @item.Title<br />
}

完成此操作的另一种方法是添加搜索输入,并使用输入名称将它们映射到要发布的控制器操作:

调节器

  public ActionResult Index()
    {


        var model = new mySearchResultModel();

        return View(model);
    }

    [HttpPost]
    public ActionResult Index(mySearchResultModel model, string searchInput)
    {


            model.mySearchResultModel = //query where filter (searchInput)
        return View(model);
    }

视图

@model IEnumerable<mySearchResultModel>
<input type="text" name="searchInput"/>

Search results:
@foreach(var item in Model) { @item.Title<br/> }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM