C# 将25个搜索字段传递到aspx页面的更好方法
我有一个25个字段的查找屏幕。当用户单击“搜索”按钮时,此信息应传递给服务器,并且用户应重定向到SearchResultList页面。将用户选择的值(从查找屏幕)获取到SearchResultList屏幕的最佳方法是什么 我可以想出两种方法:C# 将25个搜索字段传递到aspx页面的更好方法,c#,jquery,asp.net,.net,webforms,C#,Jquery,Asp.net,.net,Webforms,我有一个25个字段的查找屏幕。当用户单击“搜索”按钮时,此信息应传递给服务器,并且用户应重定向到SearchResultList页面。将用户选择的值(从查找屏幕)获取到SearchResultList屏幕的最佳方法是什么 我可以想出两种方法: 将字段添加到会话 将所选值作为查询字符串传递 有没有其他更好的方法 注意:将来,查找屏幕可能会转换为弹出div;但它仍将重定向到另一个页面以获取结果 环境:: VisualStudio2010 Net网页表单 你试过使用jQuery吗 关于这一点,还有很多
关于这一点,还有很多其他帖子。能否将表单发布到下一页,然后通过请求获取值。在搜索页上的表单[“”]?我建议使用一个会话和一个会话对象。大概是这样的:
// When retrieving an object from session state, cast it to
// the appropriate type.
ArrayList filterOptions = (ArrayList)Session["FilterOptions"];
// Write the modified list back to session state.
Session["FilterOptions"] = filterOptions ;
还有第三个更好的选择,那就是使用POST而不是GET(当您将参数放入querystring中时会这样做) 如果您使用如下表单,ASPX将自动使用POST:
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
...
</form>
...
这更好,因为数据是使用HTTP POST方法在回发时传递到页面的,该方法不显示querystring中的参数
但是,如果您希望用户能够在不编程的情况下为搜索添加书签/收藏夹,那么使用GET(querystring)方法是最好的
使用会话状态存储搜索参数很难测试、调试,而且通常是一种不好的做法。对于搜索,我通常更喜欢使用GET和查询字符串。对用户来说非常简单和透明。唯一需要注意的是,如果有25个字段,则可能会遇到错误
看看Stackoverflow或Google的搜索方式。仅在查询字符串中显示非默认值的参数。例如,如果用户只需填写25个值中的1个,则应只传递该参数。例如:
对更新/保存数据的基于事务的方法使用POST。(或者如果您的Url带有查询字符串太长。)
避免使用会话,因为它往往具有允许bug潜入的边缘条件。你必须担心会话超时、CDN缓存、用户在服务器之间切换等问题。如果你不需要,为什么要让你的生活变得复杂。你的意思与发布表单不同?+1我就是这么做的。我还经常编写一个具有静态属性的静态类,并将get/set方法读/写到会话中。这样,您就不需要难看的强制转换,并且会话变量名有一个中心位置。