2013-02-12 3 views
0

У меня есть <asp:Label ID="ceckSlide"/> на моей странице aspx и вы хотите обновить этот ярлык, постоянно формируя класс в моей модели, чтобы метка продолжала меняться в зависимости от цикла for. Я хотел бы знать, возможно ли это, если да, как бы я это сделал,обновление меток asp.net C#

Как видно из псевдокода, я вызываю метод add services на странице aspx и хотел бы обновить таблицу в соответствии с циклом for в классе createServices.

класса CreateServices

private int number = 0 
priavte int numbercount = 0; 

public void addservices() 
{ 
    numbercount = services.count; 

    for(int i = 0;i<service.count;i++) 
    { 
     ///add services 
     number = i+1; 
    } 
} 

public int GetNumber() 
{ 
    int number= number; 
    return slide; 
} 
public int GetSlideCount() 
{ 

    return numberCount; 
} 

defefaul.aspx

protected void Confirm_Click(object sender, EventArgs e) 
{ 
    var ser = new CreateServices(); 
    var addSer = ser.addservices() 
} 

// label get updated in this method in the aspx file 
protected void GetSlideNumber() 
{ 

    var ser = new CreateServices(); 
    int number= ser .GetSlideNumber(); 
    int numberCount = ser.GetSlideCount() + 1; 

    ceckSlide.Text = slide.ToString() +" Of "+slideCount; 
} 
+2

Клиент запрашивает страницу, а не сервер, обновляет клиент. –

+0

Не могли бы вы добавить больше кода и объяснить, что именно вы хотели бы достичь? –

+0

@TimSchmelter, не обязательно верно, см. [Comet] (http://en.wikipedia.org/wiki/Comet_ (программирование)) :) –

ответ

1

Самый простой способ для вас, чтобы поставить метку в качестве UpdatePanel (AJAX) и поместить на стороне клиента, таймер (JavaScript) в вашу страницу, которая отправляет запрос на обновление каждые несколько секунд (или все, что вы пожелаете). На стороне сервера просто обновите свою модель асинхронно, и функция, которая обновляет значение метки, должна непосредственно считывать из модели. Надеюсь, это поможет.

+0

как это сделать – user2061088

+0

Посмотрите, поможет ли это вам : http://stackoverflow.com/questions/1732553/how-can-i-have-an-ascx-postback-and-refresh-itself-automatically-every-x-seconds?rq=1 – dotNET

+0

, что действительно не помогло, потому что я все еще не понимаю этого, будет ли это работать в сочетании с thw for loop – user2061088

0

Возможно, вы захотите взглянуть на PokeIn Library - ASP.NET WebSocket & Comet Ajax Library (Reverse Ajax - Server Push).

От documentation webpage:

... PokeIn генерирует динамические коды JavaScript из класса .NET, чтобы вы их называете, как вы вызываете метод с одной стороны.

+0

Я думаю, что больше обфускации цикла Request/Response не приносит пользы тем, кто, похоже, не понимает его в первую очередь. – JDB

0

Я думаю, проблема в том, что вы не совсем понимаете, как работает протокол HTTP. HTTP использует модель Request/Response, где клиент (как правило, веб-браузер) делает запрос, а затем отвечает сервер.

Типичная архитектура, используемая при реализации функции автоматического обновления, которую вы описываете, именно то, что описал @dotNET, - на клиентской странице есть бит javascript, который автоматически запускает запрос с установленными интервалами. Сервер отвечает обновленным состоянием. Вы можете сделать этот интервал настолько маленьким, насколько хотелось бы, хотя более короткие интервалы иногда могут вызывать проблемы для пользователей с медленными машинами или медленными интернет-соединениями.

Хотя простое веб-приложение может быть разработано без особого знания цикла запроса/ответа, более продвинутая разработка (например, то, что вы описываете) требует практически полного понимания архитектуры веб-сайта. Если вы не понимаете HTTP-протокол, я рекомендую вам потратить некоторое время, чтобы изучить его - небольшие инвестиции будут приносить огромные дивиденды в отношении эффективности и эффективности вашего кода. REST - хорошее место для начала, потому что его рекомендации наиболее точно соответствуют спецификации HTTP.