2015-06-16 4 views
-1

У меня есть WebMethod, где я просто хочу перевернуть свойство в true.static void C# webmethod не может ссылаться на пользовательский контроль?

Я помещаю его в код-позади страницы .aspx, используя C#.

public partial class Data : Base 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     this.bgc1.BGEnabled = false; 
    } 

    [WebMethod(EnableSession = true)] 
    public static void EnableBellows() 
    { 
     this.bgc1.BGEnabled = true;    
    } 
} 

Я объявляю свойство в файле .ascx.cs:

private bool _enabled = true; 

public bool BGEnabled 
{ 
    get { return _enabled; } 
    set { _enabled = value; } 
} 

Наконец я называю WebMethod с поста JQuery Ajax.

Я получаю сообщение об ошибке, которое this недопустимо при статическом свойстве. Эта ошибка присутствует только в WebMethod, но не в Page_Load.

Моя цель - перевернуть BGEnabled на true. Если мой подход неверен, что мне нужно делать по-другому? Мне нужно сделать это из сообщения ajax.

+1

внутри статического метода вы не можете получить доступ к объекту, смотрите на [MSDN] (https: // MSDN .microsoft.com/en-us/library/79b3xss3.aspx) – Grundy

ответ

3

Я получаю сообщение об ошибке, что это недопустимо в статическом свойстве.

Действительно. Фактически, в этом случае это статический метод.

Статический член один, который связан с типом, а не с какой-либо например типа - так вот, мы могли бы назвать EnableBellows непосредственно как:

Data.EnableBellows(); 

... без создания каких-либо пример Data. Поскольку this предназначен для обозначения «экземпляра объекта, на который был вызван метод», он не имеет смысла в статическом члене.

Вам нужно подумать о том, откуда будут поступать ваши данные, и что вы будете делать с измененными данными. Имейте в виду, что веб-метод не, который называется частью загрузки страницы, поэтому у него нет доступа к каким-либо элементам управления на странице и т. Д.

В принципе, я подозреваю, что вам нужно пересмотреть целое понятие веб-методов и страниц ASP.NET.

+0

Спасибо. Я немного отвлекаюсь от идеи, так как мне хотелось бы избежать обратной передачи .net. – JoJo

+1

Ну, мы не можем сказать, что вы пытаетесь достичь здесь, но вам, вероятно, понадобится предоставить веб-метод * some * context, если он будет продолжать изменение, например. Первое, что нужно сделать, это убедиться, что вы понимаете проблему - если вы очень новичок в C#, я бы на самом деле рекомендовал на некоторое время отложить ASP.NET и изучить основы языка через консольные приложения. –

+0

Я просто скрою его с помощью jquery hide(). – JoJo

1

Внутри статического метода можно получить доступ только статические методы/объекты или instancesdeclared внутри рамки статического метода