Sanjeev236 Ответов: 1

Передача значений из javascript в функцию code behind


Я пытаюсь изменить текстовое значение button1 при щелчке другой кнопки button2, а затем получить текстовое значение button1 в коде позади события on click button1, запускаемого через JavaScript.
*Определение Кнопки
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" CssClass="Button2" Text="Button2_Old" />

*Набор значений JavaScript и нажатие кнопки
<script>
    $(document).on("click", ".Button2", function () {
        var clientid = document.getElementById("<%=Button1.ClientID %>");
        clientid.value = "XYZ";
        alert(document.getElementById("<%=Button1.ClientID %>").value);
        document.getElementById("<%=Button1.ClientID %>").click();
return false;
    });
</script>

*с фоновым кодом

protected void Button1_Click(object sender, EventArgs e)
{
    string x = Button1.Text;
}

Я не могу получить обновленное значение в коде позади. Нет ошибки на консоли, текстовое значение кнопки 1 пусто, а не так, как должно быть "XYZ". Пожалуйста, веди меня.

Что я уже пробовал:

Я перепробовал все,я знаю, но теперь я вроде как пуст. понятия не имею, как двигаться дальше.

1 Ответов

Рейтинг:
0

dnxit

Поскольку Button1 был сгенерирован на сервере без текстового значения, после обратной передачи его уже нечем будет восстановить.
В основном это обратный пост, и изменения, внесенные Javascript/Jquery на клиенте, не будут видны на стороне сервера

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

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="../Scripts/jquery-3.3.1.min.js" type="text/javascript"></script>
<script>
    function btnSetText_OnClientClick() {
          $("#<%= lbl1.ClientID %>").text("123");
          $('#HiddenFileldVariable').val($("#<%= lbl1.ClientID %>").text());
    }
</script>
</head>
<body>
<form id="form1" runat="server">
  <div>
    <asp:Label ID="lbl1" runat="server"></asp:Label>
    <asp:Button ID="btnSetText" runat="server" Text="Set Text" 

       OnClientClick="btnSetText_OnClientClick(); return false;" />
   <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
   <asp:HiddenField ID="HiddenFileld1" runat="server" />
  </div>
</form>
</body>
</html>


protected void Page_Load(object sender, EventArgs e)
{

}

protected void btnSubmit_Click(object sender, EventArgs e)
{
      string str123 = HiddenFileld1.Value;
}


Sanjeev236

На самом деле в данном коде мне нужно нажать 2 кнопки, чтобы получить значение там, где я хочу его одним щелчком мыши. Значение, полученное кнопкой javascipt щелчок кнопки btnSubmit не заполняет скрытое значение.

функция btnSetText_OnClientClick() {
$("#<%= lbl1.ClientID %>").text("123");
$('#HiddenFileldVariable').val($("#<%= lbl1.ClientID %>").текст());
$("#<%= btnSubmit.ClientID %>").нажмите кнопку();
}

dnxit

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

https://www.codeproject.com/Articles/4368/Post-an-ASP-NET-form-with-JavaScript

Sanjeev236

Спасибо за ссылки.Я предпочитаю использовать веб-метод, а не переносить postback на какую-то другую временную страницу.