从另一个webform访问服务器控件

时间:2010-12-29 20:29:45

标签: c# asp.net

我有两个webforms,每个都有一个ListBox控件。

如何从webformB访问位于webformA上的列表框?

例如,我希望在WebFormB上声明类似string name = ListBoxWebformA.SelectedValue.ToString();的内容,以便我可以在WebFormB的代码中使用该值。

WebFormA上的ListBox列出了几个名称。 当我从列表框中选择一个名字并按下OK按钮时,我会拨打Response.Redirect("~/WebFormB.aspx");

因此,从WebFormB我希望通过将所选值放入字符串来访问此“名称”。

2 个答案:

答案 0 :(得分:1)

我猜你不得不求助于在查询字符串中将值从A传递给B,或者将值存储在Session中并随后读取。

那就是

Response.Redirect(string.Format("~/WebFormB.aspx?YourVariable={0}",HttpUtility.UrlEncode(ListBoxWebformA.SelectedValue));  

你可以在表格B中阅读

Request.QueryString["YourVariable"]

如果值不敏感,则上述方法最佳。

如果是......要在会话中存储:

Session["YourVariable"] = ListBoxWebformA.SelectedValue

阅读...

if (Session["YourVariable"] != null) {
    var listAValue =  Session["YourVariable"].ToString()
}

答案 1 :(得分:1)

根据您的编辑,执行此操作的最简单(可能是最佳)方式 not 是在{{1}请求期间尝试维护webformA的有状态实例}}。重定向用户后,假设webformB已消失。

相反,当您即将执行webformAResponse.Redirect()时,请以某种方式包含您希望传递的webformB值。最简单的方法是在查询字符串上。类似的东西:

webformA

然后,在Response.Redirect(string.Format("~/WebFormB.aspx?name={0}", HttpUtility.UrlEncode(ListBoxWebformA.SelectedValue.ToString()))); 中,您可以访问以下值:

webformB

请注意,您需要进行一些错误检查等。确保在将值附加到string name = Request.QueryString["name"]; 上的重定向网址之前实际选择了该值,确保webformA在使用前包含值它在Request.QueryString["name"]等等。

但是,一般的想法是在从一个表单重定向到另一个表单时,通过查询字符串或POST值或Session值或其他一些更有状态的方式传递该值。