ASP.NET用户控件和信息传递

时间:2009-11-19 15:07:10

标签: c# asp.net user-controls

我编写了一个包含文本框和按钮的用户控件。功能是这样的,你可以在文本框中输入一个QuoteID,然后单击按钮,然后应用程序就可以获取有关指定引用的大量信息并将其放到屏幕上。

我的雇主希望将其修改为一个按钮,该按钮将驻留在正常显示订单的页面上。所以,显然在这个页面上我们可以访问QuoteID。但是,由于文本框不再是控件的一部分,我不知道如何获取ID。

有没有办法将信息传递到自定义控件?也许是一种设置HTML的方法,以便控件知道点击后将搜索的ID是什么?

我们没有使用MVC。

6 个答案:

答案 0 :(得分:4)

您可以为QuoteID的用户控件添加公共属性,并在知道它的时候设置它。

示例:

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

}

答案 1 :(得分:1)

您可以随时将ID保存为URL中的查询字符串,然后在代码隐藏文件中检索它。然后可以从HTML访问它。这取决于ID的敏感程度,因为它可以在地址栏中查看。

string ID = Request.QueryString[1];

这对提取过程有帮助,从那里只需将ID传递到代码隐藏文件所需的位置。

答案 2 :(得分:1)

用户控件中的公共属性是可行的方法。

public string QuoteID { get; set; }

您可以从页面或后面的代码中分配它。

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

QuoteControl1.QuoteID = "myquoteid";

答案 3 :(得分:1)

只需在用户控件中添加一个属性:

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

然后您可以从您的页面访问它:

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

string quote = QuoteUserControl.MyQuote;

答案 4 :(得分:0)

asp:HiddenField控件可能会在这里为您效劳。

答案 5 :(得分:0)

在您的页面加载方法中,您可以将属性传递给用户控件 - 类似于此示例(我们将隐藏标签设置为按下按钮时使用的引用ID ...)

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

虽然,你必须问自己,在这个阶段用户控件是否真的有用,因为它听起来不像你最初设计的漂亮的可重复使用的独立引用搜索框。