使用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(); 

您可以使用以下之一:

  1. 会议
  2. cookies
  3. ViewState(取决于您如何跨页面重定向)
  4. 数据库
  5. 磁盘

您的主页面上有文本框和按钮….

   

现在,您可以从上一页获取TextBox的值到GetValue.aspx

  1. 在aspx页面中
 <%=Request.Form["input"]%> 

要么

  1. 在代码文件中
 TextBox1.Text = Request.Form["input"]; (TextBox1 is in "GetValue.aspx" )