Получение входных данных

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

В приложении из предыдущей главы метод Buy использовал параметр purchase. Так как данный метод обрабатывает POST-запросы, то мы можем отправить ему следующую форму:

<form method="post" action="">
    <input type="hidden" value="@ViewBag.BookId" name="BookId" />
    <p>Введите свое имя </p>
    <input type="text" name="Person" />
    <p>Введите адрес :</p>
    <input type="text" name="Address" />
    <input type="submit" value="Отправить" />
</form>

Значение атрибута name у всех полей на этой форме соответствует названию свойства модели, поэтому система автоматически свяжет значения полей с соответствующими свойствами. А в методе Buy весь этот набор свойств превратится в модель Purchase.

Кроме POST-запросов у нас есть также GET-запросы, при которых все параметры передаются в строке запроса. Например, вторая версия метода Buy в качестве параметра принимает значение типа int: public ActionResult Buy(int id). Стандартный get-запрос принимает примерно следующую форму: название_ресурса?параметр1=значение1&параметр2=значение2. То есть запрос к данному методу мог бы выглядеть так: Home/Buy?id=2. Название параметров метода должно совпадать с названием параметров в строке запроса. Благодаря этому система сможет их автоматически связать. Ну а в самом методе мы сможем получить этот параметр и использовать его по своему усмотрению.

Кроме того, система маршрутизации позволяет создавать маршруты. Например, по умолчанию в проекте MVC определяется следующий маршрут: Контроллер/Метод/id. Последний параметр является опциональным. И благодаря этому мы можем передать параметр id и так: Home/Buy/2

Для примера определим действие, которое будет подсчитывать площадь треугольника:

public string Square(int a, int h)
{
    double s = a*h/2.0;
    return "<h2>Площадь треугольника с основанием " + a + 
			" и высотой " + h + " равна " + s + "</h2>";
}

В этом случае мы можем обратиться к действию, набрав в адресной строке Home/Square?a=10&h=3, и приложение выдало бы нам нужный результат.

Мы также можем задать для параметров значения по умолчанию:

public string Square(int a=10, int h=3)
{
    double s = a*h/2.0;
    return "<h2>Площадь треугольника с основанием " + a + 
			" и высотой " + h + " равна " + s + "</h2>";
}

В этом случае при запросе страницы мы можем указать только один параметр или вообще не указывать(Home/Square?h=5).

Получение данных из контекста запроса

Кроме того, мы можем получить параметры, да и не только параметры, но и другие данные, связанные с запросом, из объектов контекста запроса. Нам доступны следующие объекты контекста: Request, Response, RoutedData, HttpContext и Server.

Объект Request содержит коллекцию Params, которая хранит все параметры, переданные в запросы. И мы их можем получить:

public string Square()
{
    int a = Int32.Parse(Request.Params["a"]);
    int h = Int32.Parse(Request.Params["h"]);
    double s = a*h/2.0;
    return "<h2>Площадь треугольника с основанием " + a + " и высотой " + h + " равна " + s + "</h2>";
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850