簡體   English   中英

ASP.NET用戶控件和信息傳遞

[英]ASP.NET User Controls and Information Passing

我編寫了一個包含文本框和按鈕的用戶控件。 功能是這樣的,您可以在文本框中輸入QuoteID並單擊按鈕,然后應用程序運行並獲取有關指定報價的大量信息並將其抓取到屏幕上。

我的雇主希望將其修改為一個按鈕,該按鈕將位於正常顯示訂單的頁面上。 因此,顯然在此頁面上,我們可以訪問QuoteID。 但是,由於文本框不再是控件的一部分,因此我不確定如何獲取ID。

有什么方法可以將信息傳遞到自定義控件中? 也許是一種設置HTML的方法,以使控件知道單擊該控件將要搜索的ID?

我們沒有使用MVC。

您可以將公共屬性添加到QuoteID的用戶控件中,並在知道屬性時進行設置。

例:

//code behind of your user control
class SpecialUserControl: UserControl
{
    //this property is now accessible outside this user control
    public int QuoteID { get; set; }

}

您始終可以將ID作為查詢字符串保存在url中,然后在文件后面的代碼中進行檢索。 然后應該可以從HTML對其進行訪問。 這將取決於ID的敏感程度,因為在地址欄中可以看到該ID。

string ID = Request.QueryString[1];

這將有助於提取過程,然后從那里簡單地將ID傳遞到文件背后代碼中所需的位置。

用戶控件中的公共屬性是必經之路。

public string QuoteID { get; set; }

您可以從頁面或后面的代碼中進行分配。

<uc1:QuoteControl id="QuoteControl1" runat="server" QuoteID="myquoteid" />

要么

QuoteControl1.QuoteID = "myquoteid";

只需在用戶控件中添加一個屬性:

public string MyQuote
{
get
{
    return txtQuote.Text;
}
set
{
    txtQuote.Text = value;
}
}

然后,您可以通過以下方式從頁面訪問它:

<uc1:Quote id="QuoteUserControl" runat="server" />

string quote = QuoteUserControl.MyQuote;

asp:HiddenField控件可能在這里適合您。

在頁面加載方法中,您可以將屬性傳遞給用戶控件-類似於此示例(在該示例中,我們將隱藏標簽設置為當您按下按鈕時使用的引號id。)

Control c = LoadControl("QuoteSearch.ascx");
Label hiddenLabel = (Label)c.FindControl("HiddenQuoteIdLabelOrWhatever");
hiddenLabel .Text = "32415";

雖然,您必須問自己,在此階段,用戶控件是否真的有用,因為它聽起來不像您最初設計的漂亮的可重復使用的獨立報價搜索框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM