簡體   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