Опубликован: 19.03.2014 | Доступ: свободный | Студентов: 329 / 26 | Длительность: 11:36:00
Специальности: Программист
Лекция 12:

Разработка серверных сценариев гибридных мобильных приложений средствами ASP.NET

Коллекция Request

Приведенный выше C# - код получает три значения, отправленные веб-страницей, и содержащиеся в ASP коллекции, называемой Request. Эта коллекция содержит всю информацию из URL, посредством которой был запрошен данный сценарий. Поскольку наш ASP сценарий находится в файле WebForm_Mobile.aspx, то строка URL с запросом этого сценария мобильным клиентским приложением может выглядеть так:

http://www.intuitXMLHttpRequestTest.com/
WebForm_Mobile.aspx?name=Татьяна&lastname=Самойлова&country=Россия

В данном случае URL содержит три единицы информации в конце (в части URL, называющейся строкой запроса, - query string). Значение первой переменной name равно Татьяна, второй (lastname) - Самойлова, третьей (country) - Россия. Начало строки запроса обозначается знаком вопроса (?), а каждая последующая переменная - знаком амперсанда(&). Когда C#- код ASP-сценария начинает исполняться, он извлекает эту информацию из URL и сохраняет ее в коллекции Request.QueryString, где она доступна для последующих операций.

Последний шаг - отправить сообщение (или, возможно, данные) веб-странице, которая подала запрос. Эти данные можно было бы обернуть в разметку HTML или даже приспособленную для этого разметку XML, но это будет слишком для данного примера. Здесь вполне достаточно для отправки присвоить метке формы Label1 желаемый текст.

Получение данных от клиента посредством элементов управления формы

Для облегчения отладки этого кода создайте его аналог для события от щелчка по кнопке "Отправить на сервер", где примите данные из пользовательской формы (объекты TextBox). Если дважды щелкнуть на этой кнопке, в окне модуля C# создается процедура события Click. В приложениях ASP .NET код обычно отделяется от средств визуального представления и хранится в отдельном файле с двойным расширением .aspx.cs.

Включите в процедуру события Click следующий фрагмент:

// принять данные формы серверного приложения,
   //открытой в браузере мобильного устройства
   string Name = TextBox1.Text;
   string Lastname = TextBox2.Text;
   string Country = TextBox3.Text;
  // Ответ сервера клиенту
   Label1.Text += Name + " " + Lastname + " " + Country;

Полный текст модуля C# для двух событий, принимающих одноименные данные от клиента, имеет вид:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApp_Mobile
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
  // принять данные от клиентского Cardova -приложения,
   //расположенного на мобильном устройстве
   string Name = Request["name"];
   string Lastname = Request["lastname"];
   string Country = Request["country"];
   // Ответ сервера клиенту
   Label1.Text += Name + " " + Lastname + " " + Country;

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
  // принять данные формы серверного приложения,
   //открытой в браузере мобильного устройства
   string Name = TextBox1.Text;
   string Lastname = TextBox2.Text;
   string Country = TextBox3.Text;
  // Ответ сервера клиенту
   Label1.Text += Name + " " + Lastname + " " + Country;
        }
    }
}

Результат тестирования серверного приложения, принимающего данные от клиента мобильного устройства (изображены четыре шага - запрос формы браузером клиента, ввод данных, отправка на сервер, ответ сервера):


Рис. 21.13.

Рис. 21.15.

Рис. 21.16.

Подробнее ознакомиться с использованием веб - форм можно в ИНТУИТ - учебном курсе Майкла Хальверсона [5].

Дмитрий Белов
Дмитрий Белов

Каким образом можно создать точку останова? Например, если в Лекции 8 в примере, который демонстрирует возможность <canvas> для работы с готовыми изображениями (последний в лекции) в цикле
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
sx = 300 * i; sy = 350 * j;
contextNow.drawImage(img, sx, sy);}
поставить точку останова, то при запуске отладки проекта точка становится пустой окружностью с сообщением: В настоящий момент попадание в точку останова не произойдет. Нет загруженных символов для этого документа. Как все-таки создать точку останова и пройти по шагам весь код?