Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET用户控件和信息传递_C#_Asp.net_User Controls - Fatal编程技术网

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

C# ASP.NET用户控件和信息传递,c#,asp.net,user-controls,C#,Asp.net,User Controls,我已经编写了一个包含文本框和按钮的用户控件。功能是这样的:你在文本框中输入一个QuoteID,然后点击按钮,然后应用程序就会去获取一系列关于指定quote的信息,并将其弹出到屏幕上 我的雇主希望将其修改为仅一个按钮,该按钮将位于正常显示订单的页面上。所以,很明显,在这一页上我们可以访问QuoteID。但是,由于文本框不再是控件的一部分,我不确定如何获取ID 有没有办法将信息传递到自定义控件中?也许是一种设置HTML的方法,以便控件知道如果单击它将搜索什么ID 我们不使用MVC。您可以将一个公共属

我已经编写了一个包含文本框和按钮的用户控件。功能是这样的:你在文本框中输入一个QuoteID,然后点击按钮,然后应用程序就会去获取一系列关于指定quote的信息,并将其弹出到屏幕上

我的雇主希望将其修改为一个按钮,该按钮将位于正常显示订单的页面上。所以,很明显,在这一页上我们可以访问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; }

}

asp:HiddenField控件在这里可能适合您。

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

string ID = Request.QueryString[1];

这将有助于提取过程,并且从中只需将ID传递到代码隐藏文件中需要的任何位置。

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


尽管如此,您必须问问自己,在这个阶段,用户控件是否真的有用,因为它听起来不像您最初设计的可重用、独立的报价搜索框。

用户控件中的公共属性才是最佳选择

public string QuoteID { get; set; }
您可以从页面或代码隐藏中分配它

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

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

public string MyQuote
{
get
{
    return txtQuote.Text;
}
set
{
    txtQuote.Text = value;
}
}
然后,您可以通过以下方式从页面访问它:

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

string quote = QuoteUserControl.MyQuote;

字符串quote=QuoteUserControl.MyQuote;

您是否将quoteid作为用户的输入?他使用的是ASP.Net,该值不会被保留。@GenericTypeTea怎么会这样?该属性可以写入viewstate,并且绝对会被维护。我不确定我是否遵循了。那么,是否应该指定它以使答案更有用?@GenericTypeTea我不确定OP希望如何使用该属性,因此我将其保留为开放式。他可能希望在其他位置维护viewstate。也许他根本不在乎。我认为问题更多的是如何让用户控制QuoteID可以访问,而不是如何处理它。这很公平。这回答了一个我还不知道的问题,谢谢。该ID已经在URL中,所以我现在甚至不必创建属性。
public string MyQuote
{
get
{
    return txtQuote.Text;
}
set
{
    txtQuote.Text = value;
}
}
<uc1:Quote id="QuoteUserControl" runat="server" />

string quote = QuoteUserControl.MyQuote;