繁体   English   中英

使用ASP.NET(C#)在不使用QueryString的情况下将变量从页面传递到页面

[英]Passing Variable from page to page using ASP.NET (C#) without using QueryString

寻找有关在不使用QueryString的情况下从页面传递变量的建议。 像谷歌这样的网络抓取工具会抓住网址中的查询字符串。 我正试图摆脱使用它。 是否有另一种传递变量的建议方法? 我考虑过使用会话变量,但这只是为了简单地将变量从一个页面传递给另一个页面,它们并不总是相同。 有任何想法吗?

另一方面,我不能使用表格。 我正在使用母版页,其中包含母版页中嵌入的表单以及内容页。 除非microsoft更新它,否则您可以在一个页面上显示多个表单。

您可以查看使用ASP.NET路由 (可以在没有MVC的情况下完成) - 然后您可以拥有一个包含数据但没有查询字符串的路径; 就像这里的路径(实际上是MVC,但同样的逻辑适用)。

无法使用表单 - 您可以简单地使用jQuery或类似工具来动态创建表单。

ASP.NET会话存储怎么样?

您可以将内容存储到一个页面上的会话中,然后从第二页上的内容中检索它。

你可以将任何可序列化的东西添加到会话存储中,它实际上就像一个美化的字典,例如你可以使用任何字符串作为其键入其中的东西,并使用相同的键在另一页上检索它。

看到:

在ASP.Net页面之间传递数据有四种方法。

其中两个本地化为单个页面,因此有两个浏览器选项卡将具有不同的参数:

  • 使用查询字符串,作为查询字符串参数(您不想要的)或使用路径(即路由,在不同的答案中描述);

  • 使用POST(表单)参数。 这些对于网络抓取工具是不可见的;

其中两个跨越多个页面:

  • ASP.Net会议;

  • 饼干。

我认为您正在寻找的是POST(表单)参数。 使用此选项需要您更改将这些参数传递给表单的页面中的链接。 Ruby on Rails通过提供一种在后台创建表单的通用机制来执行类似的操作, 并允许您传递POST参数而无需实际创建表单 当我创建一个方法设置为POST的http://google.com链接时,它会生成以下HTML:

<a href="http://google.com" onclick="
    var f = document.createElement('form');
    f.style.display = 'none';
    this.parentNode.appendChild(f);
    f.method = 'POST';
    f.action = this.href;
    var m = document.createElement('input');
    m.setAttribute('type', 'hidden');
    m.setAttribute('name', 'param1');
    m.setAttribute('value', 'value1');
    f.appendChild(m);
    f.submit();
    return false;">Google.com using POST</a>

我已经格式化了上面的一点但是,但在HTML页面中,这将显示为一个长字符串.. document.createElement('input'); 直到appendChild允许您设置要传递给下一页的参数。

听起来你想要使用Cookie。 如果信息是安全的,您可以将值存储在数据库中,并将数据库记录的唯一ID存储在cookie中。

如果您只是将信息从一个页面传递到另一个页面,则可以执行HTTP发布。 如果您正在执行诸如登录用户之类的操作,那么您需要使用cookie和/或会话状态

根据需要,您也可以使用应用程序状态,因为您可能猜测访问是所有用户/会话:

 Application.Lock();
 Entity e = new Entity("mine");
 Application["myVar"] = e;
 Application.UnLock();

您可以使用以下之一:

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

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

<asp:TextBox ID="input" runat="server"></asp:TextBox>
<asp:Button ID="Bt" runat="server" Text="Button" PostBackUrl="~/Getvalue.aspx" />

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

  1. 在aspx页面中

<%=Request.Form["input"]%>

要么

  1. 在代码文件中

TextBox1.Text = Request.Form["input"]; (TextBox1 is in  "GetValue.aspx" )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM