Невыбираемый член System.Web.UI.Page.ClientScript не может использоваться как метод - PullRequest
0 голосов
/ 28 сентября 2018

Невозвратный элемент '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' не существует в текущемcontext

Затем я посмотрел на Этот вопрос и обнаружил, что вы можете использовать его как Page.ClientScript, но теперь я получаю сообщение об ошибке Невыбираемый элемент

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Я нашел решение:

  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);
    }
0 голосов
/ 01 октября 2018

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" ... />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...