ASP.Net PostBack&按钮内部

时间:2011-09-05 17:52:34

标签: asp.net

我使用.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个问题。试着在这里解释而不是给任何网址...谢谢。

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的一部分的一部分发布在表单中形式行为。这是用于触发服务器端事件的内容。