【问题标题】:ASP.Net PostBack & Button InternalASP.Net PostBack & 内部按钮
【发布时间】:2011-09-05 17:52:33
【问题描述】:

我在使用 .net 的 Windows 应用程序方面工作了很长时间。在过去的 2 年里,我正在使用 asp.net。我们经常使用 asp.net 按钮控件。当我们单击按钮时,会发生回发并由 asp.net 引擎调用右侧的服务器端事件。当用户单击这些按钮时,我如何链接和图像按钮导致回发。

当我们使用链接和图像按钮时,会调用 __doPostback js 函数,这会导致表单提交到服务器并请求相同的页面,asp.net 引擎会检测哪个控件导致来自名为 eventTarget 的隐藏输入控件的回发并调用权限该控件的事件处理程序。

但我不知道我们什么时候使用 asp.net 按钮控件这样的

<asp:Button ID="SampleButton" runat="server" 
        Text="Submit" 
        OnClick="ButtonClick" />

当我们点击按钮然后表单提交但如何。我知道在这种情况下__doPostback 不会调用,因为按钮__doPostback 永远不会在页面中呈现。所以在这种情况下表单提交但是asp.net引擎如何检测哪个按钮导致回发并调用正确的事件处理程序?

当回发发生时,我们如何从 txt1.text 等文本框获取数据。它是从视图状态中提取的吗……我是对的。

请回答我的 2 个问题。尝试在这里解释而不是提供任何网址...谢谢。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    关于如何控制回发非常简单。他们以与纯 html 解决方案相同的方式执行此操作。页面上有一个Form 标签。当按下按钮时,它会导致表单向服务器提交回发。

    注意form标签的action target,它指向我的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>
    

    【讨论】:

    • 我想知道当我们单击按钮时,如何调用像 Button1_click 这样的服务器端事件...我知道表单提交...但我需要知道如何正确处理事件处理程序的技巧是调用吗?
    【解决方案2】:

    是的 asp:button 默认工作方式不同。它输出一个标准的 HTML Submit 按钮,该按钮回发到在 form 上指定的 Action URL。因此,它不像其他控件那样使用事件。

    但是,如果您添加一个OnCommand 并将CommandName/CommandArgs 分配给该控件,它将导致与其他控件相同的基于事件的回调行为。 OnClick 也是如此。我以为这使用了与其他控件相同的过程,但实际上它是不同的。

    看起来它使用__VIEWSTATE__EVENTVALIDATION 来确定回发哪个表单,并且提交按钮ID 的名称作为标准HTML 表单行为的一部分发布在表单中。这是用来触发服务器端事件的。

    【讨论】:

    • 我想知道当我们单击按钮时,如何调用像 Button1_click 这样的服务器端事件...我知道表单提交...但我需要知道如何正确处理事件处理程序的技巧是调用吗?
    • 您解释了按钮事件在问题中的工作原理。所以我可能想念理解。
    • 如果您知道在使用单击按钮时如何调用 asp.net 按钮的事件处理程序,那么请解释一下...谢谢
    • 你能解释一下 asp.net 引擎如何从 __VIEWSTATE 和 __EVENTVALIDATION 隐藏字段中提取导致回发的按钮名称。请详细讨论。谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    相关资源
    最近更新 更多