Serverseitiger Code <%TextChanged();%>
wird ausgeführt, wenn die Seite das erste Mal aufgerufen wird. Die onclick-Funktion wird auf der Client-Seite ausgelöst und kann nichts auf der Server-Seite tun. Sie müssen irgendwie Postback verwenden. Verwenden Sie AJAX über jQuery oder AJAX von ASP.NET mit Seitenmethoden, Webdiensten usw.
Hier ist eine kurze Demonstration, um zu erklären, was vor sich geht. Erstellen Sie eine aspx-Seite und geben Sie Folgendes ein
<html>
<body>
<script language="javascript">
function ShowTime()
{
alert('<%= DateTime.Now.ToString() %>');
}
</script>
<form runat="server">
<asp:TextBox runat="server" onclick="ShowTime();" Text="Click Me"></asp:TextBox>
</form>
</body>
</html>
Ziehen Sie sie dann in den Browser und klicken Sie einige Male auf das Textfeld. Sie sollten jedes Mal die gleiche Meldung sehen. Prüfen Sie das gerenderte HTML (Quelle anzeigen)
<html>
<body>
<script language="javascript">
function ShowTime()
{
alert('4/20/2011 12:06:09 PM');
}
</script>
<form method="post" action="Test1.aspx" id="ctl00">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJLTU2Mzk2MTc5ZGTwB2Ph3lGOb1/uUI+lbZ5QtQQT2kk+dPbtprtjMpSZBg==" />
</div>
<div class="aspNetHidden">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgK946tbAqLAiY0L0tc9fkAJ/FKqRuxYl8nrpx8irMZ96Kzc8GjJhrrhP9A=" />
</div>
<input name="ctl01" type="text" value="Click Me" onclick="ShowTime();" />
</form>
</body>
</html>
Wie Sie sehen können, ist der serverseitige Code DateTime.Now.ToString()
bereits ausgeführt wurde und die Uhrzeit zum Zeitpunkt der Ausführung an den Client-Browser gesendet wurde. Unabhängig davon, wie oft die clientseitige Funktion ausgeführt wird, wird immer dieselbe Zeit gemeldet, da keine Kommunikation zwischen Client und Server stattfindet.