2010-03-17 113 views
0

我在工作中首次使用ASP.NET MVC 2,感觉像是一个noob。如何实现在同一页面上显示结果的搜索页面?

我有一个包含客户搜索控件/局部视图的页面。该控件是一个文本框和一个按钮。您在文本框中输入客户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 

回答

1

一个良好的开端可能的NerdDinner。

同时,虽然我会使用的方法是有一个页面,其上有我的搜索框。

然后我会有一个<div>,我叫“SearchResults”。这最终会将我的结果保存到搜索中。

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

所以当我点击按钮时,我会调用一个采用搜索参数的jQuery动作,执行搜索,然后将PartialView作为呈现的HTML返回。

回到客户端,我将呈现的HTML取代HTML中的内容。

谷歌或SO的关键词是RenderPartial。这是后端代码来呈现部分视图并为您提供html。

此外jQuery回发,以便您可以在您的控制器中调用一个操作。

1

使用RedirectToRoute作用的结果
link

+0

谢谢您的回答。但是,我无法确定我应该使用RedirectToRoute。你能提供一个例子吗? – Andrew 2010-03-18 00:17:22

+0

@Andrew,如果你不明白RedirectToRoute在哪里,你应该从头再来。 – jfar 2010-03-18 03:59:15

+0

@jfar - 我理解如何在基本术语中使用RedirectToRoute。事实上,我之前使用过它们。但是,在这种情况下,我无法看到我会在哪里使用它。一个例子会真正帮助我理解在这种情况下我会在哪里使用它。 – Andrew 2010-03-18 05:04:12

相关问题