使用POST或GET为ASP.NET搜索结果添加书签?

使用POST或GET为ASP.NET搜索结果添加书签?,asp.net,search,post,get,query-string,Asp.net,Search,Post,Get,Query String,我需要一些帮助来理解HTML表单是如何工作的。我的理解是,使用GET作为方法的表单为所述提交的表单标签中的所有字段提交名称/值对。但是,如果您看一下Google的以下示例(我在许多其他地方也看到过),并且只使用表单上的一个字段: 您不会被发送到高级搜索页面的每个字段都有名称/值对的页面,而是被带到一个看起来更干净的URL: 尽管高级搜索页面上有所有输入字段 关于我的问题。。。我自己的高级搜索页面相当大,目前正在发布到我的搜索结果页面,该页面正在接收值并进行相应的搜索,没有问题!但是,我希望

我需要一些帮助来理解HTML表单是如何工作的。我的理解是,使用GET作为方法的表单为所述提交的表单标签中的所有字段提交名称/值对。但是,如果您看一下Google的以下示例(我在许多其他地方也看到过),并且只使用表单上的一个字段:

您不会被发送到高级搜索页面的每个字段都有名称/值对的页面,而是被带到一个看起来更干净的URL:

尽管高级搜索页面上有所有输入字段


关于我的问题。。。我自己的高级搜索页面相当大,目前正在发布到我的搜索结果页面,该页面正在接收值并进行相应的搜索,没有问题!但是,我希望我的用户能够将他们的搜索添加书签/共享,为了做到这一点,我需要将项目传递到querystring中,但如果我不需要,我不希望大量的querystring。例如,如果我的用户只按颜色搜索,那么我希望URL类似于search.aspx?color=red;如果他们是按颜色和大小进行搜索,则搜索.aspx?color=red&size=large,依此类推。这可能吗

为了使事情更加复杂,我正在使用ASP.NET,所以创建一个使用GET的表单并不是最简单的事情,尽管我相信我已经找到了解决方法


如果你能在正确的方向上给出任何建议或推动,那么谢谢你!)

如果您有条件地检查结果页面上的查询字符串以确保键/值在那里,那么您的建议应该很容易实现

if(Request.QueryString["color"] != "")
{
    // Add color to the seach parameters
}

要创建GET请求,我认为您需要发回搜索表单并从那里重定向到结果表单,在需要时动态地向查询字符串添加键/值。此设计模式通常与web表单一起使用,以帮助图书标记。

如果要在用户之间共享书签搜索,则必须在发布的URL中共享名称/值查询字符串选项。如果未指定一对,则听起来您不希望包含该对。这很简单,只需为用户提供输入的配对动态构建查询字符串。因此,在处理时,循环所有输入控件,如果提供了值,则将其附加到querystring,或者不附加到querystring。

感谢您的回复!您是说将高级搜索发布到自身,根据已填写的内容构建查询字符串,然后使用这些值重定向到my search.aspx页面吗?是否将页面发布到自身,然后重定向不良做法?用户是否能够看到此重定向?在点击搜索和最终获得你的结果之间有很多闪烁,这可能有点令人不快…@sgtbeardy-我添加了一个编辑来显示设计模式,它是基于asp.net web表单中经常使用的设计模式,不应该引起任何“闪烁”。由于回发方法只需将用户输入整理成查询字符串,然后重定向,因此我不认为您会在请求中看到任何明显的延迟。@Andy-您的代码目前无法编译,因为您使用的是右括号而不是方括号。@Andy谢谢您的帮助,我会尝试一下!我会想,因为页面正在自我发布(一次页面刷新),然后该页面正在重定向到搜索结果页面(第二次页面刷新),所以屏幕刷新会闪烁一点,等待时间会比单次重定向更长。但是,是的,我会尝试一下,看看会发生什么!:)@sgtbeardy-postback方法完成后,它会将重定向发送回客户端,以获取包含其生成的查询字符串的url。由于此调用中没有内容(html或其他)可写入客户端,因此浏览器中不会闪烁。总的来说,除非提交搜索页面时调用的回发方法需要很长时间才能完成,否则它应该看起来相当无缝。