不可调用成员 'System.Web.UI.Page.ClientScript' 不能像方法一样使用
Non-invocable member 'System.Web.UI.Page.ClientScript' cannot be used like a method
不可调用成员'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 一样使用它,但现在我收到错误不可调用成员
Page.ClientScript
是一个属性,不能像方法一样使用。可能您正在寻找 Page.ClientScript.RegisterClientScriptBlock()
将脚本内容包含到页面正文中,参考问题 link.
中的另一个答案对此进行了解释
假设你正在处理 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" ... />
我找到了解决方案:
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);
}
不可调用成员'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 一样使用它,但现在我收到错误不可调用成员
Page.ClientScript
是一个属性,不能像方法一样使用。可能您正在寻找 Page.ClientScript.RegisterClientScriptBlock()
将脚本内容包含到页面正文中,参考问题 link.
假设你正在处理 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" ... />
我找到了解决方案:
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);
}