【问题标题】:performing searches with ASP.NET MVC使用 ASP.NET MVC 执行搜索
【发布时间】:2009-09-02 15:08:46
【问题描述】:

好的,在成为 ASP.NET 开发人员一段时间后,我刚刚开始学习 ASP.NET MVC。我认为我遇到的主要问题是在开发 MVC 项目时试图“忘记” ASP.NET。

这是我的问题:我有一个包含一些输入字段的页面。这些字段是我试图针对数据库运行的搜索的参数。用户选中他们想要查看的项目类型旁边的框,然后单击“搜索”。很简单的东西。

我不知道如何准确地“回发”到页面以显示结果。使用jQuery并序列化表单会更好吗?我是否使用我创建的实体框架模型?最好的方法是什么

我对 MVC 及其赋予我的控制力感到非常兴奋,但如果我想将它“出售”给我的老板,作为开发我们所有 Web 应用程序的方式,我需要克服这些最初的障碍。感谢阅读!

【问题讨论】:

    标签: asp.net-mvc search


    【解决方案1】:

    如果您还没有,请考虑查看 Professional ASP.NET MVC 1.0 中由 Rob ConeryScott HanselmanPhil HaackScott Guthrie 提供的 NerdDinner Tutorial。它包含 ASP.NET MVC 的许多功能的精彩演示,包括执行搜索和通过整页帖子返回数据以及使用 JSON 异步返回数据。

    【讨论】:

      【解决方案2】:

      如果您的输入在 html 表单元素内(如果涉及 javascript,则不同) - 您可以使用 default model binding(它也绑定路由值和查询字符串参数)。

      <form ...>
          <input type="text" name="query" />
          <input type="submit" .../>
      </form>
      

      提交时它会自动将表单值(按名称)绑定到操作参数:

      public ActionResult PerformSearch(string query)
      {
          //whatever
      }
      

      在您的情况下-我怀疑您将输入作为复选框。这样的事情应该可以工作:

      <form...>
      
          <input type="checkbox" name="p" value="value1" />
          <input type="checkbox" name="p" value="value2" />
          <input type="checkbox" name="p" value="value3" />
          <input type="checkbox" name="p" value="value4" />
          <input type="checkbox" name="p" value="value5" />
      </form>
      
      public ActionResult PerformSearch(string[] p)
      {
          //whatever
      }
      

      仅 - 如果(表单方法 == "GET"),URL 看起来不太好。 :)

      要显示结果,请为您的视图创建一个模型并通过视图显示它:

      public ActionResult PerformSearch(string[] p)
      {
          var model = _searchService(p);
          return View("Results", model);   
      }
      

      Views/Results.aspx

      <% foreach(var bar in Model){ %>
          <%= bar.Name %>
      <%}%>
      

      附:在考虑 AJAX 调用时,请始终记住,您正在失去显示 URL + 搜索引擎不理解 JS 的能力。

      【讨论】:

        猜你喜欢
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-03
        • 2015-12-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多