GetPostBackEventReference 和 GetPostBackClientEvent
翻看 msdn 里的解释没弄明白为什么这里要安排两个方法,唯一的区别就是 GetPostBackEventReference 有两个重载形式。于是我用 Reflector 看了一下,代码分别如下:
System.Web.UI.Page.GetPostBackEventReference(Control, String) : String
[EditorBrowsable(EditorBrowsableState.Advanced)]
public string GetPostBackEventReference(Control control, string argument)
{
string[] textArray1;
this.RegisterPostBackScript();
if (this._inOnFormRender)
{
textArray1 = new string[5] { "__doPostBack('", control.UniqueIDWithDollars, "','", Util.QuoteJScriptString(argument), "')" } ;
return string.Concat(textArray1);
}
textArray1 = new string[5] { "__doPostBack('", control.UniqueID, "','", Util.QuoteJScriptString(argument), "')" } ;
return string.Concat(textArray1);
}
public string GetPostBackEventReference(Control control, string argument)
{
string[] textArray1;
this.RegisterPostBackScript();
if (this._inOnFormRender)
{
textArray1 = new string[5] { "__doPostBack('", control.UniqueIDWithDollars, "','", Util.QuoteJScriptString(argument), "')" } ;
return string.Concat(textArray1);
}
textArray1 = new string[5] { "__doPostBack('", control.UniqueID, "','", Util.QuoteJScriptString(argument), "')" } ;
return string.Concat(textArray1);
}
System.Web.UI.Page.GetPostBackClientEvent(Control, String) : String
[EditorBrowsable(EditorBrowsableState.Advanced)]
public string GetPostBackClientEvent(Control control, string argument)
{
return this.GetPostBackEventReference(control, argument);
}
public string GetPostBackClientEvent(Control control, string argument)
{
return this.GetPostBackEventReference(control, argument);
}
可以看到,第二个方法仅仅是简单的调用了上面方法的基本形式而已,那么为什么还需要这个 GetPostBackClientEvent 呢? 哪位能解释一下。