使用ASP.NET MVC执行搜索

时间:2009-09-02 15:08:47

标签: asp.net-mvc search

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

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

我无法理解如何“回发”到页面以显示结果。使用jQuery和序列化表单更好吗?我是否使用我创建的实体框架模型?什么是最好的方式

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

2 个答案:

答案 0 :(得分: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);   
}

查看/ Results.aspx

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

P.S。在考虑AJAX调用时,请始终记住,您无法显示URL +搜索引擎不了解JS。

答案 1 :(得分:2)

如果您还没有,请考虑NerdDinner TutorialProfessional ASP.NET MVC 1.0Rob Conery和{{Scott Hanselman Phil Haack中的Scott Guthrie。 3}}。它包含了对ASP.NET MVC的许多功能的精彩演示,包括执行搜索并通过整页帖子以及使用JSON异步返回数据。