MVC URL:显示1参数&隐藏第二

时间:2014-10-09 11:55:42

标签: asp.net-mvc asp.net-mvc-4 url model-view-controller routing

假设我的网址为

http://someurl.com/Search?q=a&page=8

(上面提到的URL被称为AJAX中的MVC4.paging

我想要的是仅显示http://someurl.com/Search?q=a

我想隐藏我的第二个parameter,即page = 8

这可能吗?

编辑:添加更多混乱。

<a data-ajax="true" data-ajax-loading="#divLoading" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-success="successPaging" data-ajax-update="#searchresults" href="/Search?q=a&amp;page=1" title="Go to first page">&lt;&lt;</a>

我的Paging中是Next的按钮,它正在发出一个AJAX请求,所以我不知道如何将GET更改为POST。

1 个答案:

答案 0 :(得分:1)

网址并不适用于外观;它告诉服务器正在请求什么资源,并且在查询字符串的情况下,服务器需要返回响应的信息。 http://someurl.com/Search?q=a完全http://someurl.com/Search?q=a&page=8不同的资源。使用GET请求,您拥有的只是URL,因此服务器所需的所有信息都必须在URL中。评论中的其他人告诉您要做的是使用POST请求,其中包括帖子正文。换句话说,您可以将信息传递到URL和邮件正文中的服务器两者。这允许您从URL中删除page参数,并将其包含在帖子正文中。这是你能达到你想要的唯一方式。

那就是说,严格来说,POST不适合获取这样的资源。 POST应该用于更新或修改资源或在API场景中调用某些原子方法。它也可以用于创建资源,尽管PUT更合适。 GET应该用于返回不可变的资源。例如,无论客户端请求什么,对http://someurl.com/Search?q=a&page=8的任何请求都应始终返回相同的响应。并且,实际使用URL的重要性甚至更低,因为用户根本没有看到它,因为您通过AJAX请求它​​(它不会显示在导航栏中)。只需将其保留为GET请求并保留参数。