如何在不丢失PostBack功能的情况下将自己的JavaScript链接到客户端

时间:2020-03-06 14:24:51  来源:igfitidea点击:

因此,我在Scott Hanselman的博客上阅读了这些Asp.Net采访问题,然后我遇到了这个问题。任何人都可以弄清他在说什么。

解决方案

我认为他要问的是我们如何将javascript函数与ASP.NET post back功能结合使用。

即如何使用自己的Javascript触发控件的事件。

ASP.NET类库包含在System.Web.UI.Page类中找到的ClientScript类,使我们可以通过编程方式将Javascript添加到ASP.NET页。

它包含一个名为" GetPostBackEventReference"的方法,该方法将生成ASP.NET用于触发连接到Web控件的事件的__doPostBack脚本。

希望有道理

意思是这样的吗:

在后面的代码中:

protected string GetPostBack()
{
    return ClientScript.GetPostBackEventReference(this, null);
}

并在aspx中:

<a href="javascript:<%=GetPostBack() %>">Click here to postback</a>

<asp:LinkButton ID="lbEdit" CssClass="button" 
            OnClientClick="javascript:alert('do something')" 
            onclick="OnEdit"  runat="server">Edit</asp:LinkButton>

OnClientClick属性意味着我们可以添加一些JavaScript而不丢失PostBack功能,这将是我在采访中的答案。

Explain how PostBacks work

回发是Web协议之上的抽象,它模仿无状态协议上的有状态行为。

, on both the client-side

在客户端,通过JavaScript调用和隐藏字段(用于存储页面上所有控件的状态)来实现回发。

and server-side.

服务器端经历了事件的生命周期,生命周期的一部分是视图状态的水合,以维持页面上所有控件的状态,并根据传递给__doPostBack调用的参数来引发事件在客户端

How do I chain my own JavaScript into
  the client side without losing
  PostBack functionality?

取决于需要什么。 99%的时间中最简单的方法是使用asp:hiddenfield在客户端和服务器端之间进行通信。对于极端情况,我们想进入Exenders并通过MS ajax API在javascript中操纵viewstate / controlstate / clientstate。巨大的学习曲线和很多陷阱非常痛苦,通常使用隐藏字段并手动调用__doPostBack就足够了

这就是我要回答的要点。有关__doPostBack的更多信息,一个快速的google会为我们提供很多结果(对于懒惰的人,这是第一个热门网站http://aspalliance.com/895)