0

我有一个asp按钮default.aspx

<asp:Button ID="Button1" runat="server" Text="Button" />

并且有一个程序default.aspx.vb

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Panel1.Controls.Add(New LiteralControl(Date.Now))
End Sub

老师问我,如何进行完全相同的操作(单击按钮时,显示日期)但没有回发和没有javascript代码。我可以在那里制作一个java代码并使用OnClientClick="return false",但它似乎不对

4

1 回答 1

2

参考ASP.Net 页面的客户端

你不能这样做。Button(input type=submit) 的默认行为是submit/post将表单发送到表单action属性中指定的 url。

如果你想防止默认行为,你需要编写一个 javascriptreturn false

<asp:Button ID="btn" OnClientClick="return false" runat="server" Text="Button" />

默认情况下,asp.net 将表单发布到同一页面本身。我们将其称为 PostBack。在浏览器中查看呈现的 html 中的表单标记操作值,它将是相同的页面名称

<input type =submit name ="btn" id="btn" 
  onclick="javascript:__doPostBack('btn','')"value ="Button">

以下内置 javascript 代码执行此操作

<script>
                   function __doPostBack(eventTarget, eventArgument) {
                       document.Form1.__EVENTTARGET.value = eventTarget;
                       document.Form1.__EVENTARGUMENT.value = eventArgument;
                       document.Form1.submit();
                   }
</script>

您的页面将自动添加以下字段,以检测需要在服务器端触发的事件。您可以简单地在请求参数中访问,例如Request.Params["__EVENTTARGET"]

<input type =hidden name ="__EVENTTARGET" value ="">
<input type =hidden name ="__EVENTARGUMENT" value ="">
于 2013-10-10T10:56:59.890 回答