如何实现在同一页面上显示结果的搜索页面?

时间:2010-03-17 23:25:16

标签: asp.net-mvc

我第一次在工作项目中使用ASP.NET MVC 2,感觉有点像菜鸟。

我有一个包含客户搜索控件/部分视图的页面。控件是一个文本框和一个按钮。您在文本框中输入客户ID并点击搜索。然后页面“刷新”并在同一页上显示客户详细信息。换句话说,客户详细信息显示在客户搜索控件下方。

这样,如果客户不是正确的,则用户可以再次搜索而无需回到浏览器中。或者,也许他们错误地输入了客户ID并需要再试一次。

我希望网址如下所示:

/Customer/Search/1

显然,这遵循项目中的默认路线。

现在,如果我将上面的URL直接输入我的浏览器,它可以正常工作。但是,当我然后使用该页面上的搜索控件来搜索说客户2时,页面会刷新正确的客户详细信息,但URL不会更改!它保持

/Customer/Search/1

当我想要它时

/Customer/Search/2

如何让它更改为正确的网址?

我只使用Global.asax中的默认路由。

我的搜索方法如下所示:

<AcceptVerbs(HttpVerbs.Get)> _
Function Search(ByVal id As String) As ActionResult
    Dim customer As Customer = New CustomerRepository().GetById(id)

    Return View("SearchResult", customer)
End Function

2 个答案:

答案 0 :(得分:1)

一个好的起点可能是NerdDinner,如果你还没有。

同时我使用的方法是让一个页面上有我的搜索框。

然后我有一个名为“SearchResults”的<div>。这最终会将我的结果保留在搜索中。

然后我有一个PartialView,它采用包含所有搜索结果并呈现它们的模型。

因此,当我单击按钮时,我会调出一个带有搜索参数的jQuery操作,执行搜索,然后将我的PartialView作为呈现的HTML返回。

回到客户端,我接受渲染的HTML并用HTML替换div的内容。

google或SO的关键字是RenderPartial。这是后端代码,用于呈现部分视图并为您提供html。

还有jQuery回发,以便您可以在控制器中调用操作。

答案 1 :(得分:1)

使用RedirectToRoute操作结果
link