Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Как получить введенные юзером данные


Автор: Competitor 24.1.2007, 15:06
Открываю страничку. На ней находится input. Юзер вводит данные. Как со старой странички узнать, что именно он ввел в новой?

Автор: vladsch 24.1.2007, 15:48
Что подразумевается под старой и новой страницами?
Если подразумевается что юзер вводит что-то, жмет к примеру Submit и
обработка идёт на другой странице (например, у кнопки выставлен PostBackUrl
на другую страницу), то можно использовать PreviousPage.FindControl или Request.Form

Автор: Competitor 24.1.2007, 15:56
Нужно изменить элемент другой странички. Пусть текущая страничка default.aspx.
Мне же нужно изменить значение элемента myElement в странички otherPage.aspx.
 smile 

Автор: vladsch 24.1.2007, 16:05
Цитата

Нужно изменить элемент другой странички. Пусть текущая страничка default.aspx.
Мне же нужно изменить значение элемента myElement в странички otherPage.aspx.


А смысл всего этого? Когда ты находишься на страничке default.aspx, то страницы 
otherPage.aspx нет в памяти, контролы её не созданы. Так что изменять даже не чего

Изменить ты сможешь только если будешь на otherPage.aspx.

Если очень нужно такое поведение, то запоминай на default.aspx изменения, которые
нужно внести в контрол на otherPage.aspx (в сессии, в базе или где-то ещё) и когда
будешь на otherPage.aspx изменяй этот контрол


P.S. Всё что я тут сказал верно только в том случае если эти две страницы не живут
одновременно в разных фреймах

Автор: Competitor 24.1.2007, 16:19
vladsch, сперва была загружена страничка MainPage.aspx, так что все ее элементы созданы. Далее юзер нажал на кнопку Button и открылась другая страничка Comment.aspx. В ней пользователь ввел: "Ваш сайт попахивает фикальными выделениями". И закрыл это окно. И мы опять оказались на исходной MainPage.aspx. Как мне теперь узнать, что написал юзер на страничке Comment.aspx. 
Я так понимаю, нуно со странички Comment.aspx передать инфу на MainPage.aspx. Так вот как это сделать. Допустим я хочу присвоить введенные данные элементу myElement. 

Автор: vladsch 24.1.2007, 16:46
Ок, понял проблему. Решается способами, которые я упомянул в первом посте
Пример:

1. PreviousPage

   Значит так, находимся на Comment.aspx
   На этой странице есть контрол TextBox1 для комментов и кнопка для подтверждения комментов
   У этой кнопки выставим параметр PostBackUrl в "MainPage.aspx"
   На этой странице всё

   На странице MainPage.aspx пусть будет лейбл, который будет отображать коммент, если был
   выполнен кросс постбек. Обработчик Page_Load

Код

   protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage != null)
        {
            Control comment = this.PreviousPage.FindControl("TextBox1");
            Label1.Text = comment != null ? ((TextBox)comment).Text:"No TextBox1";
        }
        
    }

   
Здесь можно сделать улучшение, типа можно принимать PreviousPage только определлённого типа
Ну это ты сам в мсдн посмотри


2. Request.Form

    Входные условия те же

   На MainPage.aspx обработчик Page_Load
   
Код

protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Form["TextBox1"] != null)
        {
            Label1.Text = Request.Form["TextBox1"];
        }
    }


Этот вариант, мне кажется, будет работать не всегда, так как ASP может заменить ID на что-то другое
(не даром у контролов есть свойство ClientID)


Автор: Pankon 24.1.2007, 23:37
Цитата(Competitor @  24.1.2007,  15:06 Найти цитируемый пост)
Открываю страничку. На ней находится input. Юзер вводит данные. Как со старой странички узнать, что именно он ввел в новой? 

JavaScript 

Автор: Pankon 7.3.2007, 17:15
Цитата(Pankon @  24.1.2007,  23:37 Найти цитируемый пост)
JavaScript  

Competitor, не умеешь(читай не можешь) прислушиваться к советам?  smile 
Что ж, даю наводящие примеры:

MainPage.aspx
Код

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Флудиразище</title>
    <script language="javascript" type="text/javascript">
    var myWin;
    function openWin() {
        myWin = window.open ('Comment.aspx', 'Fekalii', 'top=100,left=330,height=400,width=590');
        myWin.focus();
    return false;
    }
    </script>

</head>
<body>
    <form id="form1" runat="server">
        <div>
            <input id="ButtonBe" type="button" value="Clickme" onclick="openWin();" />
            <div id="datenRecipient" style="width: 400px; height: 100px; border:solid 1px black;">
            
            </div>
        </div>
    </form>
</body>
</html>
Comment.aspx
Код

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Comment</title>
    <script language="javascript" type="text/javascript">
        function saveMyDaten() {
            var myParent;
            myParent = window.opener;
            var dt;
            dt = window.document.getElementById('sourceDaten').value;
            myParent.document.getElementById("datenRecipient").innerHTML=dt;
        }
</script>
</head>
<body onunload="saveMyDaten();">
    <form id="form1" runat="server">
        <asp:Label ID="Myslja" runat="server" Text="Я учусь прислушиваться к советам"></asp:Label>
        <br/>
        <div>
            <input id="sourceDaten" type="text" />
            <br/><br/><br/><br/>
            мой сайт попахивает фикальными выделениями
        </div>
    </form>
</body>
</html>


Наслаждайся своим сайтом  smile 


ПС1. А что такое - Флудираз?
ПС2. Попытайся подумать в следующий раз сам..... , когда будешь понижать рейтинг. 
       Ну или поиск в сети.... smile 

Автор: Fighter 16.12.2009, 19:00
И что-то все равно ничего не помогает. 
PreviousPage всегда NULL.

Автор: Fighter 17.12.2009, 13:36
UP

Автор: tol05 17.12.2009, 14:24
PreviousPage будет не null если делать переход через Server.Transfer или свойство кнопок PostBackUrl

Response.Redirect("Default2.aspx") тоже не даст PreviousPage

Код

<a href=Default2.aspx >click here</a>
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/Default2.aspx"/>


посмотрите в браузере чем отличается конечная html разметка для перехода на Default2.aspx

Автор: Fighter 18.12.2009, 01:17
Ага, теперь понятно, все работает. Но, возникает следующая проблема, а что если мне необходимо при нажатии на кнопку написать еще обработчик, и в зависимости от каких-то определенных параметров переход будет осуществляться либо на одну страничку либо на другую. 

Автор: tol05 18.12.2009, 09:40
Не используйте PostBackUrl, а напишите обычный серверный обработчик кнопки. В нем, в зависимости от условий, выполняйте или Transfer на ту или иную страницу. При этом в браузере правда урл останется тем же, что был на исходной странице, или Redirect на ту или иную страницу. Недостаток - лишний вызов с клиента

Или напишите клиенсткий javascript, если условия выбора могут быть вычислены на клиенте (не будет лишнего вызова) и повесьте его на кнопку. 

вариантов много

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)