2009-11-19 74 views
0

我写了一个包含文本框和按钮的用户控件。功能是这样的,你输入一个QuoteID到文本框中,然后点击该按钮,然后应用程序将获取关于指定报价的一堆信息并将其放到屏幕上。ASP.NET用户控件和信息传递

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

有什么方法可以将信息传递到自定义控件中吗?也许一种设置HTML的方法,以便控件知道如果点击它将搜索哪个ID?

我们没有使用MVC。

+0

你走quoteid作为用户的输入? – 2009-11-19 15:12:44

回答

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; } 

} 
+0

他使用ASP.Net,该值不会被维护。 – GenericTypeTea 2009-11-19 15:14:04

+0

@GenericTypeTea怎么样?该属性可以写入视图状态,它将被绝对保留。我不确定我是否遵守。 – Joseph 2009-11-19 15:15:08

+0

不应该指定那么让答案更有用吗? – GenericTypeTea 2009-11-19 15:25:33

0

ASP:HiddenField控件可能制定出你在这里。

1

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

string ID = Request.QueryString[1]; 

这将有助于提取过程,并从那里简单地将ID传递到代码隐藏文件所需的任何位置。

+0

这回答了一个问题,我甚至不知道我还没有,但是,谢谢。该ID已经在URL中,所以我现在甚至不需要创建一个属性。 – 2009-11-19 15:48:58

0

在您的网页加载方法,你可以通过属性的用户控件 - 这样的例子(这里我们设一个隐藏的标签是使用的报价ID,当你按下按钮......)

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

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

1

用户控件中的公共属性是要走的路。

public string QuoteID { get; set; } 

您可以从页面或后面的代码中指定它。

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

QuoteControl1.QuoteID = "myquoteid"; 
1

只需在用户控件添加PROPERT:

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

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

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

string quote = QuoteUserControl.MyQuote;