2015-07-01 4 views
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».

Есть ли лучший способ сделать это?

Edit ниже:

Спасибо всем за помощь. Все еще не понял этого, но подошел ближе.

Использование этого кода: ContentPlaceHolder CPH1 = Page.Master.FindControl ("CPH1") as ContentPlaceHolder; Response.Write (CPH1.FindControl ("First_Name"));

Дает мне этот результат: System.Web.UI.WebControls.TextBox.

Что я не понял, так это как получить значение TextBox как строку. Кажется, что все, что я пробую, приводит к ошибке.

+0

Поскольку вы размещаете страницы на разных страницах, возможно, серверный элемент управления недоступен вам в методе загрузки страницы, поэтому я полагаюсь на предсказуемость именования элементов управления ASP.NET (например, вы уже делаете) - это ваш лучший вариант. Это не sloppy, но контрольное имя IS sorta уродливое. –

ответ

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; 
+0

Я тоже об этом думал, но думаю, что это полезно только на стороне клиента, а не на сервере. –

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

0

Как насчет Request.Redirect пойти на другую страницу, вы можете передать параметры в том же запросе, а затем получить доступ к ним с помощью Request.QueryString [ "NameoftheParameter"].

Например: Вызов страницы 2 с полем параметра1: - Response.Redirect ("~/Page2.aspx? Field1 =" xyz.Текст);

Доступ к полю переменной 1 на странице 2 следующим образом: - Строковое поле1 = Request.QueryString ["field1"];

Надеюсь, это поможет!

 Смежные вопросы

  • Нет связанных вопросов^_^