【问题标题】:MVC URL: show 1 parameter & hide secondMVC URL:显示 1 个参数并隐藏第二个参数
【发布时间】:2014-10-09 11:55:41
【问题描述】:

假设我的 URL 为

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

(上面提到的URLAJAX 称为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>

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

【问题讨论】:

  • 你为什么要这样做?无论如何,你想要的是做一个“POST”并在url中有一些参数,还有一些在body中。看看这个链接:stackoverflow.com/questions/17645877/…
  • 隐藏?如果您不希望您的 queryStrings 在 url 中可见,您应该在请求正文中 POST 这些变量或更好地使用 form
  • @ManishMishra ,我知道我可以 POST,但我想在 queryString 中显示 1 (q) 参数。
  • 然后使您的网址具有该参数q,然后在网址上执行POST 无论如何与其余参数。
  • 我已经编辑了我的问题,请看一下。

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


【解决方案1】:

网址不只是为了外观;它告诉服务器正在请求什么资源,对于查询字符串,这是服务器返回响应所需的信息。 http://someurl.com/Search?q=a 是一个完全不同于http://someurl.com/Search?q=a&amp;page=8 的资源。对于 GET 请求,您所拥有的只是 URL,因此服务器需要的所有信息都必须在 URL 中。 cmets 中的其他人告诉您要做的是使用 POST 请求,其中包括 post body。换句话说,您可以在 URL 和帖子正文中将信息传递给服务器。这允许您从 URL 中删除 page 参数并将其包含在帖子正文中。只有这样,你才能实现你想要的。

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

【讨论】:

  • 谢谢,我知道保持现状是个好主意,但我的经理要求我做我所质疑的事情。那么现在我应该认为我所问的不可能吗?
  • 不是同时保持一个常规的旧 GET 请求。
猜你喜欢
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 2020-04-03
相关资源
最近更新 更多