代码之家  ›  专栏  ›  技术社区  ›  Scott

ASP.NET MVC-将搜索结果生成一个DIV

  •  1
  • Scott  · 技术社区  · 15 年前

    我不熟悉ASP.NET MVC,但我需要搜索与所选类别匹配的文章。这个查询的结果可能需要用dhtml-jquery写入一个“search results”DIV覆盖。

    所以,我需要一个操作的结果,但不需要呈现一个视图。我在想我可以使用JSON,然后以某种方式迭代得到的记录。

    或者更容易使用renderpartial…但在这个DHTML场景中,我如何使用它呢?

    谢谢。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Mathias F    15 年前

    我喜欢史蒂夫·桑德森在他的ASP.NET MVC书中描述的方式。它不适用于JSON,但返回一个分部。这使得两者都更容易获得:Ajax和非Ajax版本。

    根据请求类型,cotroller返回视图或部分视图:

    public ActionResult GetArticles(string category)
    {
        ...
        if(Request.IsAjaxRequest())
        {
            return PartialView("ArticleListPartial",articleModel)
        }
        else
        {
            return View("ArticleListPage",articleModel)
        }
    }
    

    默认情况下,搜索使用非Ajax日志提交来自:

    <form id="articleSearch" method ="post" action="/Article/GetArticles" >
    ...
    <input type="submit" value="Get the articles!" />
    <form>
    

    然后有一个jquery片段,当有可用的javascript并通过ajax提交请求时,它就会启动。

    <script language="javascript" >
      $(function() {
        $("#articleSearch").submit(function() {
            $.post($(this).attr("action"), $(this).serialize(), function(modelResponse) {
                ("#articleResultContainer").html(modelResponse);
    
            });
            return false;
        });
      });
    </script>
    
        2
  •  0
  •   griegs    15 年前

    嗯,听起来你想做一个过滤器?

    如果是这样的话,我认为在HTML中搜索是个坏主意。我认为更好的方法是使用jquery发回日志,从您使用的任何数据库中获取结果集,并将其作为局部视图返回到视图中。

    在搜索数据库时,您应该使用SQL、Linq2SQL或您正在使用的任何工具在此时应用过滤器。

    如果您仍然热衷于搜索HTML,那么我会给每个相关的DIV一个类名,比如class=“divsearchable”。然后在jquery中,您可以做类似的事情;

    $('.DivSearchable").each(function() { 
    
     var text = $(this).val();
     "Now test text for contents of your seach string"
      if (BoolIfFound == true)
        $(this).addClass("highlightClassName");
    });
    

    HighlightClassName会将背景色设置为某个颜色,这样您就可以看到哪些div包含搜索字符串。

    有道理?