不可使用的成员'System.Web.UI.Page.ClientScript'不能用作方法。
我试图冻结单击时的按钮,以使用户不会双击意外导致重复的实体。这是我的代码:
private void FreezeButton()
{
var sb = new StringBuilder();
sb.Append("if (typeof(Page_ClientValidate) == 'function') { ");
sb.Append("var oldPage_IsValid = Page_IsValid; var oldPage_BlockSubmit = Page_BlockSubmit;");
sb.Append("if (Page_ClientValidate('" + btnAdd.ValidationGroup + "') == false) {");
sb.Append(" Page_IsValid = oldPage_IsValid; Page_BlockSubmit = oldPage_BlockSubmit; return false; }} ");
sb.Append("this.value = 'Processing...';");
sb.Append("this.disabled = true;");
sb.Append(Page.ClientScript(btnAdd, null) + ";");
sb.Append("return true;");
string submitButton = sb.ToString();
btnAdd.Attributes.Add("onclick", submitButton);
}
首先,我尝试使用不带 Page.ClientScript 的客户端,它给了我以下错误:名称'ClientScript'
在当前上下文中不存在
然后我看了一个This问题,发现您可以像Page.ClientScript一样使用它,但是现在我得到了Error Non-invocable成员
答案 0 :(得分:1)
Page.ClientScript
是一个属性,您不能像使用方法一样使用它。可能您正在寻找Page.ClientScript.RegisterClientScriptBlock()
来将脚本内容包含到页面正文中,该问题由引用的问题链接中的另一个答案解释。
假设您正在使用btnAdd
方法事件处理来处理服务器控件FreezeButton
,则应替换包含RegisterClientScriptBlock
和JS函数名称的内容以调用客户端验证如下例所示:
protected void FreezeButton(object sender, EventArgs e)
{
var sb = new StringBuilder();
sb.Append("function validate() { ")
// script content here, skipped for brevity
sb.Append("}");
// use RegisterClientScriptBlock to attach script content into <script> tag inside page body
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Example", sb.ToString(), true);
// handle client-side event click if the button is a server control
btnAdd.OnClientClick = "validate()";
}
然后,像这样处理btnAdd
的服务器端点击事件:
<asp:Button ID="btnAdd" runat="server" OnClick="FreezeButton" ... />
答案 1 :(得分:0)
我找到了解决方法:
private void FreezeButton()
{
var sb = new StringBuilder();
sb.Append("if (typeof(Page_ClientValidate) == 'function') { ");
sb.Append("var oldPage_IsValid = Page_IsValid; var oldPage_BlockSubmit = Page_BlockSubmit;");
sb.Append("if (Page_ClientValidate('" + btnAdd.ValidationGroup + "') == false) {");
sb.Append(" Page_IsValid = oldPage_IsValid; Page_BlockSubmit = oldPage_BlockSubmit; return false; }} ");
sb.Append("this.value = 'Processing...';");
sb.Append("this.disabled = true;");
sb.Append(Page.ClientScript.GetPostBackEventReference(btnAdd, null) + ";");
sb.Append("return true;");
string submitButtonOnclickJs = sb.ToString();
btnAddReceipt.Attributes.Add("onclick", submitButtonOnclickJs);
}