3

让一个页面读取从另一个页面发布的值的最佳方法是什么?我有一些有用的东西,但它似乎相当草率。

我正在处理一个多页表单,第一页使用 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") as ContentPlaceHolder; Response.Write(CPH1.FindControl("First_Name"));

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

我还没有弄清楚如何将 TextBox 的值作为字符串获取。似乎我尝试的任何事情都会导致错误。

4

3 回答 3

0

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

http://www.asp.net/web-forms/overview/older-versions-getting-started/master-pages/control-id-naming-in-content-pages-cs

 ContentPlaceHolder MainContent = Page.Master.FindControl("MainContent") as ContentPlaceHolder;

 Label ResultsLabel = MainContent.FindControl("First_Name") as Label;
于 2015-07-01T15:01:36.920 回答
0

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

Previous Page您可以选择使用以下语法获取控件:

TextBox tbControl = (TextBox)PreviousPage.FindControl("First_Name");

您还可以public properties从源页面公开并在目标页面上访问它。

Label1.Text = PreviousPage.First_Name;

关于跨页发布的 MSDN 文章:https ://msdn.microsoft.com/en-us/library/ms178139.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

于 2015-07-01T15:10:22.847 回答
0

你用 Request.Redirect 去另一个页面怎么样,你可以在同一个请求中传递参数,然后使用 Request.QueryString["NameoftheParameter"] 访问它们。

例如:- 使用参数 field1 调用第 2 页:- Response.Redirect("~/Page2.aspx?field1="xyz.Text);

像这样访问第 2 页上的变量字段 1:- String field1 = Request.QueryString["field1"];

希望这可以帮助!

于 2015-07-01T20:08:34.893 回答