Маршрутизация URL запросов ASP.NETMVC приложением.



 

В ASP.NET MVC 5 все определения маршрутов находятся в файле RouteConfig.cs, который располагается в проекте в папке App_Start. Если мы на него посмотрим, то увидим настройки маршрута по умолчанию:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Routing;

namespace Mvc5RoutesApp

{

public class RouteConfig

{

public static void RegisterRoutes(RouteCollection routes)

   {

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 

routes.MapRoute(

name: "Default",

url: "{controller}/{action}/{id}",

defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

);

   }

}

}

Установкой маршрутов занимается статический метод RegisterRoutes. Вызов метода производится в файле Global.asax в методе Application_Start:

protected void Application_Start()

{

AreaRegistration.RegisterAllAreas();

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

RouteConfig.RegisterRoutes(RouteTable.Routes);

BundleConfig.RegisterBundles(BundleTable.Bundles);

}

ВызовметодаRouteConfig.RegisterRoutes(RouteTable.Routes) какразипроизводитрегистрациюмаршрутоввприложении.

Маршрутпоумолчанию:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}") - отключаетобработкузапросовдлянекоторыхфайлов, напримерсрасширением *.axd (WebResource.axd)

Routes.MapRoute(

name: "Default",

url: "{controller}/{action}/{id}",

defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

);

содержит маршрут Default, связывающий первый сегмент URL с именем контроллера, второй с методом, и третий с параметром id.

 

Общая характеристика технологии LINQ и интерфейсов для работы с различными источниками данных.

 

LINQ (Language Integrated Query, запрос, интегрированный в язык) – проект Microsoft по добавлению синтаксиса языка запросов, напоминающего SQL, в языки программирования платформы .NET Framework

§ Технология LINQ позволяет вам писать безопасные в смысле типизации структурированные запросы к локальным коллекциям объектов и удаленным источникам данных.

§ LINQ позволяет вам строить запросы к любой коллекции, реализующей интерфейс IEnumerable<>, будь то массив, список, коллекция XML DOM или удаленный источник данных, такой как таблицы на SQL-сервере.

§ Технология LINQ предлагает сочетание достоинств проверки типов на этапе компиляции и динамического составления запросов.

§ Системные типы, поддерживающие LINQ, определены в пространствах имен System.Linq и System.Linq.Expressions в сборке System.Core.

Запрашиваемые (исходные) данные могут быть представлены в форме:

XML

LINQ to XML — API-интерфейс, который ориентирован на работу с XML

баз данных

LINQ to SQL — API-интерфейс IQueryable<T>, позволяет запросам LINQ работать с реляционными базами данных.

LINQ to DataSet — API-интерфейс для работы с DataSet.

LINQ to Entities— альтернативный LINQtoSQL API-интерфейс для обращения к базе данных. Он отделяет сущностную объектную модель от физической базы данных, вводя логическое отображение между ними двумя. В частности, когда необходимо ослабить связь между сущностной объектной моделью и базой данных, если сущностные объекты конструируются из нескольких таблиц или требуется большая гибкость в моделировании сущностных объектов, то в этом случае LINQ to Entities может стать оптимальным выбором.

объектов

LINQ to Objects- API-интерфейс IEnumerable<T>длястандартныхоперацийзапросов (Standard Query Operators)

 

Операция запроса в LINQ. Способы записи запроса (синтаксисы записи). Выполнение запроса.

Оператор запроса — это метод, преобразующий последовательность. В типичном случае оператор запроса принимает входную последовательность и возвращает результат преобразования — выходную последовательность. В классе Enumerable из пространства имен System.Linq имеется около 40 операторов запроса, и все они реализованы как статические методы расширения. Они называются стандартными операторами запроса.

Все операции запроса LINQ состоят из трех различных действий.

1. получение источника данных;

2. создание запроса;

3. выполнение запроса

Запрос – это набор инструкций, которые описывают, какие данные необходимо извлечь из указанного источника (или источников) данных, а также описывают форму и организацию извлекаемых данных. Запрос отличается от полученного с его помощью результата.

Способы создания запросов LINQ на языке C#:

1. Использование синтаксиса запроса (интегрированный запрос).

2. Использование синтаксиса метода (методы расширений).

3. Использование сочетания синтаксиса запроса и синтаксиса метода.

Пример:

class IntroToLINQ

{       

staticvoidMain()

{

// 1. Получение источника данных

int[] numbers = newint[7] { 0, 1, 2, 3, 4, 5, 6 };

   // 2. Созданиезапроса

   // numQuery – этоIEnumerable<int>

var numQuery =

from num in numbers

where (num % 2) == 0

select num;

   // 3. Выполнениезапроса

foreach (int num in numQuery)

{

Console.Write("{0,1} ", num);

   }

}

}

LINQ включает в себя около 50 стандартных операций запросов, разделяемых на 2 большие группы

• отложенные операции -выполняются не во время инициализации, а только при их вызове;

• не отложенные операции-выполняются сразу.

 

52. Запросы LINQ для осуществления фильтрации, сортировки и группировки. Примеры для различных способов записи.

 

Метод расширения Where и соответствующее выражение запроса where.

//Where extension method example

var customersOver25 = customers.Where(cust => cust.Age > 25);

//where query operator example

var customersOver25 = from cust in customers where cust.Age > 25 select cust;

Метод расширения OrderBy и соответствующее выражение запроса orderby.

//OrderBy extension method example

var sortedCustomers = customers.OrderBy(cust => cust.FirstName);

//orderby query operator example

var sortedCustomers = from cust in customers orderby cust.FirstName select cust;

Предложение group позволяет группировать результаты на основе указанного ключа.

Метод расширения GroupBy и соответствующее выражение запроса groupby.

//GroupBy extension method example

var customersGroupedByAge = customers.GroupBy(cust => cust.Age);

//groupby query operator example

var customersGroupedByAge = from cust in customers group cust by cust.Age;

Когда запрос завершается предложением group, результаты представляются в виде списка из списков. Каждый элемент в списке является объектом, имеющим член Key и список элементов, сгруппированных по этому ключу.

 


Дата добавления: 2018-05-02; просмотров: 203; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!