Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 让一个页面读取从另一个页面发布的值的最佳方式是什么?_C#_Asp.net_Namevaluecollection_Postbackurl - Fatal编程技术网

C# 让一个页面读取从另一个页面发布的值的最佳方式是什么?

C# 让一个页面读取从另一个页面发布的值的最佳方式是什么?,c#,asp.net,namevaluecollection,postbackurl,C#,Asp.net,Namevaluecollection,Postbackurl,让一个页面读取另一个页面发布的值的最佳方式是什么?我有一些有用的东西,但似乎有些马虎 我正在处理一个多页表单,第一页使用PostBackUrl转到第二页 在第1页中是名为“CPH1”的内容占位符。里面是一个名为“First_Name”的字段 我使用PostBackUrl将第一页提交给第二页 然后,第二页的代码隐藏文件读取该值,并使用以下代码将其放入变量中: protected void Page_Load(object sender, EventArgs e) { NameV

让一个页面读取另一个页面发布的值的最佳方式是什么?我有一些有用的东西,但似乎有些马虎

我正在处理一个多页表单,第一页使用PostBackUrl转到第二页

在第1页中是名为“CPH1”的内容占位符。里面是一个名为“First_Name”的字段

我使用PostBackUrl将第一页提交给第二页

然后,第二页的代码隐藏文件读取该值,并使用以下代码将其放入变量中:

protected void Page_Load(object sender, EventArgs e)
   {
       NameValueCollection nvc = Request.Form;
       string First_Name_Here = nvc["ctl00$CPH1$First_Name"] ;
   }
如您所见,我使用字段的最终名称“ctl00$CPH1$First_name”而不是“First_name”来获取信息

有更好的方法吗

编辑如下:

谢谢大家的帮助。我还没弄明白,但已经接近了

使用此代码: ContentPlaceHolder CPH1=Page.Master.FindControl(“CPH1”)作为ContentPlaceHolder; Write(CPH1.FindControl(“First_Name”)

给我这个结果:System.Web.UI.WebControls.TextBox


我还没有弄清楚的是如何将文本框的值作为字符串获取。似乎我尝试的任何东西都会导致错误。

请仔细阅读下面的文章,其中包含您需要的所有信息


根据您发布到其他页面的方式,您有几个选项

您可以选择使用以下语法获取
上一页
控件:

TextBox tbControl = (TextBox)PreviousPage.FindControl("First_Name");
您还可以从源页面公开
公共属性
,并在目标页面上访问它

Label1.Text = PreviousPage.First_Name;

MSDN关于跨页发布的文章:

您的请求如何。重定向到另一页,您可以在同一请求中传递参数,然后使用Request.QueryString[“参数名称”]访问它们

例如:- 使用参数字段1调用第2页:- Response.Redirect(“~/Page2.aspx?field1=“xyz.Text”)

访问第2页上的变量字段1,如下所示:- String field1=Request.QueryString[“field1”]


希望这有帮助

由于您是跨页面发布的,那么在页面加载方法中服务器控件可能不可用,因此我认为依赖ASP.NET控件命名的可预测性(就像您已经做过的那样)是您最好的选择。它不是草率的,但是控件名有点难看。我也想到了,但我认为它只在客户端有用,而不是在服务器端。
Label1.Text = PreviousPage.First_Name;