我使用.net在Windows应用程序中工作了很长时间。在过去的两年里,我正在使用asp.net。我们经常使用asp.net按钮控件。当我们点击按钮然后发生回发和由asp.net引擎调用的右侧服务器端事件。我怎么链接&当用户点击这些按钮时,图像按钮会导致回发。
当我们使用link&图像按钮然后__doPostback js函数被调用并导致表单提交到服务器并请求相同的页面和asp.net引擎检测哪个控件导致从名为eventTarget的隐藏输入控件回发并为该控件调用右事件处理程序。
但我不知道我们何时使用asp.net按钮控件,如
<asp:Button ID="SampleButton" runat="server"
Text="Submit"
OnClick="ButtonClick" />
当我们点击按钮然后还表单提交但如何。我知道在这种情况下__doPostback
不会调用,因为按钮__doPostback
永远不会在页面中呈现。所以在这种情况下表单提交,但asp.net引擎如何检测哪个按钮导致回发并调用正确的事件处理程序?
当回发发生时,我们如何从文本框中获取数据,如txt1.text。它是从viewstate中提取的......我是对的。
请回答我的2个问题。试着在这里解释而不是给任何网址...谢谢。
答案 0 :(得分:1)
关于如何控制回发,它非常简单。他们以与纯HTML解决方案相同的方式实现它。页面上有一个Form
标记。按下按钮时,它会使表单提交回发到服务器。
注意表单标记的操作目标,它指向我的aspx页面 这都是由aspx页面本身生成的。
<form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMjA0OTM4MTAwNGRk5H5eaMNZp5tsD/GQ2iYj2p8J0as=" />
</div>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKmxpCiBgKSotaIC5iWtiHNi+oxYiuBULPgr5d0/WFu" />
</div>
<div>
<input type="submit" name="btn1" value="click me" id="btn1" />
</div>
</form>
答案 1 :(得分:0)
是asp:button
默认情况下的工作方式不同。它会输出一个标准的HTML Submit
按钮,该按钮会回传到Action
上指定的form
网址。因此,它不会以与其他控件相同的方式使用事件。
但是,如果添加OnCommand
并将CommandName/CommandArgs
分配给控件,则会导致与其他控件相同的基于事件的回调行为。 OnClick
也是如此。我认为这使用了与其他控件相同的过程,但实际上它是不同的。
看起来它使用__VIEWSTATE
和__EVENTVALIDATION
来确定发回的表单,并将提交按钮ID的名称作为标准HTML
的一部分的一部分发布在表单中形式行为。这是用于触发服务器端事件的内容。