getElementById (). значение в JS, C # и ASP.NET - PullRequest
1 голос
/ 04 ноября 2011

Я пытался заставить C # и JS общаться друг с другом через скрытый ввод. Я просмотрел различные форумы и коды, но ни у одного из них, похоже, нет именно этой проблемы. У многих из них была синтаксическая ошибка, и я попытался отладить это. В основном это линия

document.getElementById("Hidden1").value = str;  

это не похоже на работу. Я попытался поставить предупреждающие сообщения до и после этой строки. Если поставить предупреждение раньше, всплывающее окно всплывет, но после него не всплывает, что заставляет меня заподозрить эту строку кода. При запуске в Visual Studio 2010 через браузер Chrome сообщения об ошибках не отображались. Если кто-то может помочь с этим вообще, это было бы очень ценно.

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

ASP.NET CODE

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master"     AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication10._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
  <asp:ScriptManager ID="ScriptManager1" runat="server"/>
  <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<Triggers>

 <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
             </Triggers>
             <ContentTemplate>
    <div>
        <input id="Hidden1" type="hidden" name="Hidden1" runat="server"    value="replaceme"     />
        <asp:Button ID="Button1" runat="server" OnClientClick="abc()"  Text="Button" 
            onclick="Button1_Click" />
    </div>
    <div>
    </ContentTemplate>
     </asp:UpdatePanel>
    <script type="text/javascript">
        function abc() {
            var str = "value";
            document.getElementById("Hidden1").value = str;  
        }
</script>
</div>

</asp:Content>

C # CODE

protected void Button1_Click(object sender, EventArgs e)
    {

        MessageBox.Show(Hidden1.Value);
    }

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Возможно, ваша проблема в том, что идентификатор элемента управления asp.net и идентификатор на стороне клиента для Hidden1 не совпадают. Конечно, просмотрите исходный код HTML, но я думаю, вам понадобится что-то вроде:

document.getElementById("<%= Hidden1.ClientID %>").value = "Some value";
0 голосов
/ 04 ноября 2011

Элемент на стороне клиента не будет иметь идентификатор "Hidden1", он будет иметь идентификатор, который автоматически генерируется ASP.NET.

Вот почему у вас возникает проблема на клиенте-side: document.getElementById('Hidden1') вернет null, и вы затем пытаетесь получить доступ к свойству value этой ссылки null.

Вам необходимо использовать автоматически сгенерированный идентификатор в вашем JavaScriptвместо этого через свойство ClientID:

document.getElementById('<%=Hidden1.ClientID%>').value = str;
...