不可使用的成员'System.Web.UI.Page.ClientScript'不能像方法一样使用

时间:2018-09-28 15:23:30

标签: c# asp.net clientscript

不可使用的成员'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成员

2 个答案:

答案 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);
    }