Изменение asp: HiddenField.value с JS на ButtonClick - PullRequest
2 голосов
/ 27 августа 2010

У меня есть четыре текстовых поля в моем HTML;один из них представляет собой текстовое поле asp: serverside, а остальные отображаются на стороне клиента с использованием динамического JavaScript.Javascript создает текстовые области;их может быть 6, может быть 90. В этом примере их 3.

<asp:Textbox id="tbxReal" runat="server"/>
<asp:button id="btnReal" runat="server" Value="go" />
<asp:HiddenField ID="hdnID" runat="server" />

<textarea rows="10" cols="60" id="one"></textarea>
<input onclick="sub('one');" type="button" value="Go_One" />

<textarea rows="10" cols="60" id="two"></textarea>
<input onclick="sub('two');" type="button" value="Go_Three" />

<textarea rows="10" cols="60" id="one"></textarea>
<input onclick="sub('three');" type="button" value="Go_Three" />

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

Вот мой javascript:

function sub(id)
{
    hdn = document.getElementById('WhatGetsAppended_hdnID');
    hdn.value = id;
    alert(hdnID.value);

    var Real = document.getElementById('WhatGetsAppended_tbxReal');
    var Fake = document.getElementById(id);
    Real.value = Fake.value;

    var button = document.getElementById('WhatGetsAppended_btnReal');
    button.click();    
}

Затем обработчик событий C # для tbxReal:

protected void btnReal_Click(object sender, EventArgs e)
{
    Response.Write(Convert.ToInt32(hdnID.Value) + "<BR />");
    Response.Write(tbxReal.Text + "<BR />");
}

Мой код работает для изменения текста в tbxReal, но я могу 't изменить значение hdnId при обратной передаче.Как мне исправить мой код, чтобы я мог изменить значение HiddenField в Javascript и сделать обратную передачу прочитав это новое значение?

Редактировать: Подтверждено, что я знаю, какие clientIDs серверных элементов управления находятся в JS.

Ответы [ 3 ]

1 голос
/ 27 августа 2010

Я предполагаю, что alert(hdnID.value); отображает правильное значение, которое вы ожидаете увидеть на стороне сервера.

Убедитесь, что вы не устанавливаете hdnID или не привязываете данные (если этограницей) в Page_Load, иначе измененное значение будет заменено временем, которое вы достигнете btnReal_Click.

0 голосов
/ 27 августа 2010

логика выглядит хорошо, поэтому либо вы получаете ссылку на неверный скрытый элемент управления, либо перезаписываете значение где-то еще, прежде чем получите возможность прочитать его обратно. размещение вашего рендеринга HTML может помочь. это может иметь или не иметь значение, что вы повторили идентификатор для своих входных данных на стороне клиента в вашем примере.

0 голосов
/ 27 августа 2010

Разве вы не должны изменить свой JavaScript, чтобы использовать свойства ClientID элементов управления?

function sub(id)
{
    hdn = document.getElementById("<%=hdnID.ClientID%>");
    hdn.value = id;
    alert(hdnID.value);
    var Real = document.getElementById("<%=tbxReal.ClientID%>");
    var Fake = document.getElementById(id);
    Real.value = Fake.value;
    var button = document.getElementById("<%=btnReal.ClientID%>");
    button.click();    
}

Возможно, это сработало для элементов управления Button и TextBox, но поскольку вы установили runat="server", идентификатор предназначен для серверного элемента управления.

Ах, я также вижу, что вы используете свойство id в нижнем регистре для Button и TextBox, но свойство ID в верхнем регистре для HiddenField. Я думаю, что это также имеет значение.

...