Как вызвать метод non stati c из веб-метода - PullRequest
1 голос
/ 16 июня 2020

В моем коде раньше я сохранял данные при нажатии кнопки, здесь hdnDisplayOrderSaveData - ASP скрытое поле

    protected void btnSaveDisplayOrder_Click(object sender, EventArgs e)
        string data = hdnDisplayOrderSaveData.Value;
        Service service = new Service();
        if (IsSaveStringValid(data))
        {
            bool result = service.SaveServicesDisplayOrder(data);
            if (result)
            {
                ClientScript.RegisterStartupScript(typeof(Page), "script", "showMessage(1);", true);
            }
            else
            {
                ClientScript.RegisterStartupScript(typeof(Page), "script", "showMessage(2);", true);
            }
        }
        LoadDisplayOrder();
    }

Затем мне нужно переместить вышеуказанные функции в веб-метод, поэтому мой код как следует,

public partial class ProductAdminSortOrder : BasePage
    {
        private List<int> serviceIds = new List<int>();

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                CheckSession();
                CheckPagePermissions(Permissions.ServicesAdministrator);
                LoadDisplayOrder();
            }
            catch (Exception ex)
            {
                Logger.LogErrorEvent(ex);
                throw;
            }
        }

        /// <summary>
        /// Loads the display order.
        /// </summary>
        private void LoadDisplayOrder()
        {

        }

        [WebMethod]
        public static void SaveOrder()
        {

            string data = hdnDisplayOrderSaveData.Value;
            Service service = new Service();
            if (IsSaveStringValid(data))
            {
                bool result = service.SaveServicesDisplayOrder(data);
                if (result)
                {
                    ClientScript.RegisterStartupScript(typeof(Page), "script", "showMessage(1);", true);
                }
                else
                {
                    ClientScript.RegisterStartupScript(typeof(Page), "script", "showMessage(2);", true);
                }
            }
            LoadDisplayOrder();
        }

        //protected void btnSaveDisplayOrder_Click(object sender, EventArgs e)

        //}

        private bool IsSaveStringValid(string data)
        { 
            data = Regex.Replace(data, @"\s+", "");

            string[] items = data.Split('#');

            if (!IsDataValid(item))
            {
                return false;
            }
        }

        private bool IsDataValid(string[] item)
        {
            if (item.Length != 2)
            {
                return false;
            }
            else
            {
                return serviceIds.Any(id => id == Convert.ToInt32(item[0], CultureInfo.InvariantCulture));
            }
        }

    }

после этого я получаю следующие ошибки:

An object reference is required for the non-static field, method, or property 'ServicesAdminSortOrder.hdnDisplayOrderSaveData'
An object reference is required for the non-static field, method, or property 'ServicesAdminSortOrder.LoadDisplayOrder()'
An object reference is required for the non-static field, method, or property 'Page.ClientScript'
  1. У меня два вопроса, веб-метод должен быть static
  2. Как я могу избежать этих ошибок?

Обновлено:

как я вызываю веб-метод,

function DeleteKartItems() {     
     $.ajax({
     type: "POST",
     url: 'ProductAdminSortOrder.aspx/SaveOrder',
     data: "",
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function (msg) {
         console.log('success');
     },
     error: function (e) {
         console.log('failed');
     }
     });
}

1 Ответ

0 голосов
/ 16 июня 2020

Вам нужно будет отправить данные, которые ранее были сохранены в скрытом поле, как часть запроса в WebMethod, используя ajax или ASP Панель обновления. Пример: https://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

...