Karthik_Mahalingam Ответов: 3

Значение метки ASP, назначенное на стороне клиента, не появляется в postback


Всем привет

Я столкнулся с проблемой в получении значения метки после post back.

У меня есть метка, и я изменяю значение на стороне клиента ( используя jquery , javascript )

когда я делаю post back by button click event, я не получаю вновь назначенное значение текста метки в коде позади (файл .cs )

Как ее решить..

Я не хочу использовать скрытое поле..

код::::::

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="JQuery.js" type="text/javascript"></script>

    <script type="text/javascript">
        $(function () {

            $('#btn').click(function (e) {

                $('#lbl').text('value changed from client side');

                return true;
            });

        });
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lbl" Text="sometext" runat="server"></asp:Label>
        <br />
        <asp:Button ID="btn" Text="submit" runat="server" onclick="btn_Click" />
    </div>
    </form>
</body>
</html>





protected void btn_Click(object sender, EventArgs e)
        {
            string lblvalue = lbl.Text;
        }



Есть идеи ??

Заранее спасибо...

Thanks7872

Где этот код?

Karthik_Mahalingam

код добавлен ......

3 Ответов

Рейтинг:
26

Thanks7872

Важно знать, как работает код на стороне клиента и сервера. Взгляните на эту ссылку : Установите текстовое свойство asp:label в Javascript надлежащим образом[^]

Там объясняется точно такая же проблема. Я не знаю, почему вы не хотите использовать hiddenfield/Viewstate и т. д. Взгляните на пример кода, который я создал:

<asp:HiddenField ID="Hidden1" runat="server" />    
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

С фоновым кодом:
Page.ClientScript.RegisterStartupScript(this.GetType(), "change label", "<script type='text/javascript'>change_label()</script>");
Label1.Text = Hidden1.Value;//This is how you will get the updated value 

язык JavaScript:
<script type="text/javascript">
function change_label() {      
    document.getElementById("Label1").innerText = "This is updated value";           
}   
</script>


Karthik_Mahalingam

Я не хочу использовать скрытое поле, потому что у меня есть более 10 меток, которые нужно обновить на стороне клиента..

Thanks7872

Вот как это делается ASP.NET работает. Сервер и клиент-это совершенно разные вещи. В очень простых терминах,вы должны сделать сервер осведомленным о том, что произошло на стороне клиента. Я обновил решение, чтобы показать вам пример кода.

Karthik_Mahalingam

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

Thanks7872

Скопируйте и вставьте приведенный выше код.Это работает. Попытайтесь понять, что я сделал.

Joezer BH

5ed!

Рейтинг:
0

Reaus

Я только что сделал именно это. Вот что я сделал, чтобы вытащить значение, которое я устанавливаю на свой ярлык...

Для каждой обновляемой метки необходимо также создать скрытое поле. Простого скрытого поля html будет достаточно.

<asp:Label runat="server" ID="cust1" Text="" AutoPostBack="false"></asp:Label>
<input type="hidden" name="hidCust1" id="hidCust1" runat="server" enableviewstate="true" />


Убедитесь, что для скрытого поля "enableviewstate" установлено значение "true".

В JavaScript, после того, как вы установите значение метки:
if (cust1.innerHTML == '') {
    cust1.innerHTML = desc;
    icust1.style.visibility = 'visible';
}


также установите значение скрытого поля:
document.getElementById("hidCust1").value = cust1.innerText


Затем, в вашем коде позади, просто запросите значение скрытого поля:
sRetVal = hidCust1.Value


Рейтинг:
0

AlexDpars

Вы можете использовать viewstate для сохранения значения метки, как описано выше здесь


Karthik_Mahalingam

Нет, чувак, это не работает. Есть ли у вас образец??