使用ASP.NET(C#)在不使用QueryString的情况下将变量从页面传递到页面
寻找有关在不使用QueryString的情况下从页面传递变量的建议。 像谷歌这样的网络抓取工具会抓住url中的查询字符串。 我正试图摆脱使用它。 是否有另一种传递变量的建议方法? 我已经考虑过使用会话变量,但这只是为了简单地将变量从一个页面传递给另一个页面,它们并不总是相同。 有任何想法吗?
另一方面,我不能使用表格来做。 我正在使用母版页,其中包含母版页中嵌入的表单以及内容页。 除非microsoft更新它,否则您可以在一个页面上显示多个表单。
您可以查看使用ASP.NET路由 (可以在没有MVC的情况下完成) – 然后您可以拥有一个包含数据但没有查询字符串的路径; 就像这里的路径(实际上是MVC,但同样的逻辑适用)。
无法使用表单 – 您可以简单地使用jQuery或类似工具来动态创建表单。
ASP.NET会话存储怎么样?
您可以将内容存储到一个页面上的会话中,然后从第二页上的内容中检索它。
你可以将任何可序列化的东西添加到会话存储中,它实际上就像一个美化的字典,例如你可以使用任何字符串作为其键入其中的东西,并使用相同的键在另一页上检索它。
看到:
- ASP.NET会话状态概述
- ASP.NET会话状态
在ASP.Net页面之间传递数据有四种方法。
其中两个本地化为单个页面,因此有两个浏览器选项卡将具有不同的参数:
-
使用查询字符串,作为查询字符串参数(您不想要的)或使用路径(即路由,在不同的答案中描述);
-
使用POST(表单)参数。 这些对于网络抓取工具是不可见的;
其中两个跨越多个页面:
-
ASP.Net会议;
-
cookies。
我认为您正在寻找的是POST(表单)参数。 使用此方法需要您更改将这些参数传递给表单的页面中的链接。 Ruby on Rails通过提供一种在后台创建表单并允许您传递POST参数而不实际创建表单的通用机制来执行类似的操作。 当我创建一个方法设置为POST的http://google.com链接时,它会生成以下HTML:
Google.com using POST
我已经格式化了上面的一点但是,但在HTML页面中,这将显示为一个长字符串.. document.createElement('input');
直到appendChild
允许您将要传递的参数设置到下一页。
听起来你想要使用Cookie。 如果信息是安全的,您可以将值存储在数据库中,并将数据库记录的唯一ID存储在cookie中。
如果您只是将信息从一个页面传递到另一个页面,则可以执行HTTP发布。 如果您正在执行诸如登录用户之类的操作,那么您需要使用cookie和/或会话状态
根据需要,您也可以使用应用程序状态,因为您可能猜测访问是所有用户/会话:
Application.Lock(); Entity e = new Entity("mine"); Application["myVar"] = e; Application.UnLock();
您可以使用以下之一:
- 会议
- cookies
- ViewState(取决于您如何跨页面重定向)
- 数据库
- 磁盘
您的主页面上有文本框和按钮….
现在,您可以从上一页获取TextBox
的值到GetValue.aspx
- 在aspx页面中
<%=Request.Form["input"]%>
要么
- 在代码文件中
TextBox1.Text = Request.Form["input"]; (TextBox1 is in "GetValue.aspx" )