- Вспомогательная функция тега привязки в ASP.NET Core MVC
- Атрибуты вспомогательной функции тега привязки
- asp-controller
- asp-action
- asp-route- Рассмотрим следующее действие контроллера: С шаблоном маршрута по умолчанию, определенным в Startup.Configure: Представление MVC использует модель, предоставляемую действием: Заполнитель
маршрута по умолчанию соответствует требуемому. Созданный HTML: Предположим, префикс маршрута не входит в состав соответствующего шаблона маршрутизации, как в случае со следующим представлением MVC: Следующий код HTML будет создан, так как элемент speakerid не найден в соответствующем маршруте: Если атрибут asp-controller или asp-action не указан, применяется та же обработка по умолчанию, что и в атрибуте asp-route . asp-route Атрибут asp-route используется для связывания URL-адреса непосредственно с именованным маршрутом. С помощью атрибутов маршрутизации маршруту можно присвоить имя, как показано в классе SpeakerController и используется в его действии Evaluations : В следующем элементе атрибут asp-route ссылается на именованный маршрут: Вспомогательная функция тега привязки создает маршрут непосредственно к этому методу контроллера, используя /Speaker/Evaluations URL-адреса. Созданный HTML: Если наряду с атрибутом asp-route указаны атрибут asp-controller или asp-action , созданный маршрут может отличаться от ожидаемого. Во избежание конфликта маршрута asp-route нельзя использовать вместе с атрибутами asp-controller или asp-action . asp-all-route-data Атрибут asp-all-route-data поддерживает создание словаря пар «ключ-значение». Ключ является именем параметра, а значение — значением параметра. В следующем примере словарь инициализируется и передается в Razor представление. Кроме того, данные могут быть переданы с помощью модели. Предыдущий код вызывает следующий код HTML: Словарь asp-all-route-data предназначен для создания строки запроса, соответствующей требованиям перегруженного действия Evaluations : Если ключи в словаре совпадают с параметрами маршрута, эти значения будут соответствующим образом заменены в маршруте. В качестве параметров запроса будут созданы другие несовпадающие значения. asp-fragment Атрибут asp-fragment определяет фрагмент URL-адреса, добавляемый к URL-адресу. Вспомогательная функция тега привязки добавляет символ решетки (#). Рассмотрим следующий элемент: Хэштеги полезны при создании приложений на стороне клиента. Например, их можно использовать для простоты пометки и поиска на языке JavaScript. asp-area Атрибут asp-area указывает имя области, используемое платформой для определения соответствующего маршрута. Ниже приведен пример того, как атрибут asp-area приводит к повторному сопоставлению маршрутов. Использование на Razor страницах Razorобласти страниц поддерживаются в ASP.NET Core 2,1 или более поздней версии. Пусть имеется следующая иерархия каталогов: wwwroot Области Сеансы Страницы _Виевстарт. cshtml Index.cshtml Index.cshtml.cs Страницы Разметка для ссылки на страницу индекса области сеансов Razor : Для поддержки областей в Razor приложении для страниц выполните одно из следующих Startup.ConfigureServices действий в. Задайте версию совместимости 2.1 или более позднюю. Задайте для свойства Razor Пажесоптионс. алловареас значение true : Использование в MVC Пусть имеется следующая иерархия каталогов: wwwroot Области Блоги Контроллеры HomeController. CS Представления Home AboutBlog.cshtml Index.cshtml _Виевстарт. cshtml Контроллеры При установке для атрибута asp-area значения Blogs перед маршрутами связанных контроллеров и представлений для этого тега привязки добавляется каталог Areas/Blogs. Исправления для ссылки на представление AboutBlog: Для поддержки областей в приложении MVC в шаблон маршрута необходимо включить ссылку на область, если она существует. Этот шаблон представлен вторым параметром routes.MapRoute вызова метода во время запуска. Настройте: asp-protocol Атрибут asp-protocol предназначен для указания протокола (например, https ) в URL-адресе. Пример: Имя узла в примере — localhost. При формировании URL-адреса вспомогательная функция тега привязки использует общедоступный домен веб-сайта. asp-host Атрибут asp-host предназначен для определения имени узла в URL-адресе. Пример: asp-page Атрибут ASP-Page используется со Razor страницами. Используйте его для определения значения атрибута href тега привязки для определенной страницы. Чтобы создать URL-адрес, перед именем страницы следует ввести символ косой черты (/). Следующий пример указывает на страницу «участник» Razor : Атрибут asp-page является взаимоисключающим с атрибутами asp-route , asp-controller и asp-action . Тем не менее asp-page можно использовать с asp-route- для управления маршрутизацией, как показано в следующем элементе: asp-page-handler Атрибут ASP-Page-Handler используется со Razor страницами. Он предназначен для связывания с обработчиками определенных страниц. Рассмотрим следующий обработчик страниц: Связанный элемент модели страницы ссылается на обработчик страниц OnGetProfile . Обратите внимание, что префикс On имени метода обработчика страниц опущен в значении атрибута asp-page-handler . Когда метод является асинхронным, суффикс Async также опускается. Источник Контроллеры Контроллеры и их действия Центральным звеном в архитектуре ASP.NET Core MVC является контроллер. При получении запроса система маршрутизации выбирает для обработки запроса нужный контроллер и передает ему данные запроса. Контроллер обрабатывает эти данные и посылает обратно результат обработки. В ASP.NET Core MVC контроллер представляет обычный класс на языке C#, который наследуется от абстрактного базового класса Microsoft.AspNetCore.Mvc.Controller . По умолчанию проект ASP.NET Core MVC содержит как минимум один контроллер — HomeController: В данном случае мы видим, что констроллер имеет конструктор, через который посредством механизма dependency injection передается сервис ILogger, используемый для логгирования. Также контроллер определяет три метода — Index, Privacy и Error. При использовании контроллеров существуют некоторые условности. Во-первых, в проекте контроллеры помещаются в каталог Controllers . И во-вторых, по соглашениям об именовании названия контроллеров обычно оканчиваются на суффикс «Controller», остальная же часть до этого суффикса считается именем контроллера, например, HomeController. Но в принципе эти условности необязательны. Но есть также и обязательные условности, которые предъявляются к контроллерам. В частности, класс контроллера должен удовлетворять как минимум одному из следующих условий: Класс контроллера имеет суффикс «Controller» Класс контроллера наследуется от класса, который имеет суффикс «Controller» К классу контроллера применяется атрибут [Controller] Если нам нужен еще один контроллер, то мы можем добавить в папку Controllers новый класс, который будет наследоваться от класса Controller . Либо мы можем использовать готовый шаблон Controller Class : Контроллер, как и любой класс на языке C#, может иметь поля, свойства, методы. По умолчанию HomeController имеет четыре метода, которые можно назвать действиями . Действия контроллера — это публичные методы, которые могут сопоставляться с запросами. Например, стандартный контроллер содержит метод Index — он имеет модификатор public и поэтому может использоваться для обработки запроса. Чтобы обратиться контроллеру из веб-браузера, нам надо в адресной строке набрать адрес_сайта/Имя_контроллера/Действие_контроллера . Так, по запросу адрес_сайта/Home/Index система маршрутизации по умолчанию вызовет метод Index контроллера HomeController для обработки входящего запроса. Например: Однако такое сопоставление строки url с названием контроллера и его метода происходит благодаря системе маршрутизации. Если мы обратимся к классу Startup и его методу Configure() , то мы можем найти там определение единственного для приложения маршрута: Метод endpoints.MapControllerRoute добавляет один маршрут с именем default и шаблоном « / / » . Данный шаблон устанавливает трехсегментную структуру строки запроса: controller/action/id . То есть в начале идет название контроллера, затем название действия, и далее может идти необязательный параметр id. Собственно поэтому система может соотнести запрос типа localhost:xxxx/Home/Index с контроллером и его действием. Однако не все методы контроллера являются действиями. Контроллер также может иметь непубличные методы — такие методы не рассматриваются как действия и соответственно не могут соотноситься с запросами. Например, определим в контроллере следующий метод: Поскольку его модификатор отличается от public , то мы не сможем обратиться к этому методу с запросом localhost:xxxx/Home/Hello . Хотя такие не публичные методы также могут быть полезными — в них можно определять какие-нибудь промежуточные вычисления и затем использовать в действиях контроллера. При этом если мы изменим модификатор метода на public , то метод Hello станет полноценным действием: Атрибуты NonController, ActionName и NonAction Возможно, сопоставление по умолчанию бывает не всегда удобно. Например, у нас есть класс в папке Controllers, но мы не хотим, чтобы он мог обрабатывать запрос и использоваться как контроллер. Чтобы указать, что этот класс не является контроллером, нам надо использовать над ним атрибут [NonController] : Аналогично, если мы хотим, чтобы какой-либо публичный метод контроллера не рассматривался как действие, то мы можем использовать над ним атрибут NonAction : Атрибут [ActionName] позволяет для метода задать другое имя действия. Например: В этом случае чтобы обратиться к этому методу, надо отправить запрос localhost:xxxx/Home/Welcome. А запрос localhost:xxxx/Home/Hello работать не будет. Типы запросов В прошлой главе для обработки запросов использовалась следующая пара методов: Несмотря на то, что здесь два разных метода, но они в соответствии с именем образуют одно действие Buy. Допустимо определять в контроллере методы с одним и тем же именем, только в этом случае они должны различаться по параметрам, как в данном случае. Кроме того, методы в рамках одного действия могут обслуживать разные запросы. Для указания типа запроса HTTP нам надо применить к методу один из атрибутов: [HttpGet] , [HttpPost] , [HttpPut] , [HttpDelete] и [HttpHead] . Если атрибут явным образом не указан, то метод может обрабатывать все типы запросов: GET, POST, PUT, DELETE. Источник Почему /?action=report не работает? Помощь в написании контрольных, курсовых и дипломных работ здесь. Как расширить ссылку из Controller/Action/Id до Contr/Action/Category/Id ? Здравствуйте, Дорогие форумчане! Давно не брался за ASP, поэтому задаю несколько глупый и для. Куда я должен вставить ON DELETE NO ACTION or ON UPDATE NO ACTION? Сделал миграцию, бд не хочет обновляться, что-то требует, Что мне нужно сделать что-бы она не. Ошибка каскадных таблиц (Specify ON DELETE NO ACTION or ON UPDATE NO ACTION) Здравствуйте. Возникла проблема с созданием таблицы. Ошибка в Package Manager Console . Почему в переменой Action остается 1? Скажите plsss где ошибка . Timer1.Enabled = True Timer1.Interval = 500 Private Sub. Не работает form action При нажатии на клавишу ничего не происходит. Сайт не перенаправляется. Что не так? Как исправить? . Split Action Bar не работает Здравствуйте, я создал иконку в actionbar, файл res/menu/menu_main.xml и хочу чтобы она находилась. Delphi 10 Reve Report/Fast Report Ado Sql пожалуйста помогите вывести бд на печать через rave или fast report, почитал тут темы и мануал по. Как сделать чтобы программа могла работать с отчетами Crystal Report на компьютере где нет VS и Crystal Report Как сделать чтобы программа могла работать с отчетами Crystal Report на компьютере где нет VS и. Работа с отчетами Crystal Report на компьютере где нет VS и Crystal Report Как сделать чтобы программа могла работать с отчетами Crystal Report на компьютере где нет VS и. Почему смена текста работает только один раз? Что неправильно в коде и почему? Нужно чтобы при щелчке мыши на поверхности кнопки текст метки Label изменялся на текст окна. Источник - asp-route
- asp-all-route-data
- asp-fragment
- asp-area
- Использование на Razor страницах
- Использование в MVC
- asp-protocol
- asp-host
- asp-page
- asp-page-handler
- Контроллеры
- Контроллеры и их действия
- Атрибуты NonController, ActionName и NonAction
- Типы запросов
- Почему /?action=report не работает?
Вспомогательная функция тега привязки в ASP.NET Core MVC
Вспомогательная функция тега привязки повышает эффективность стандартного тега привязки HTML ( ) путем добавления новых атрибутов. Как правило, все имена атрибутов начинаются с asp- . Отображаемое значение атрибута href элемента привязки определяется значениями атрибутов asp- .
Общие сведения о вспомогательных функциях тегов см. здесь: Вспомогательные функции тегов в ASP.NET Core.
В примерах в этом документе используется SpeakerController
Атрибуты вспомогательной функции тега привязки
asp-controller
Атрибут asp-controller назначает контроллер, используемый для создания URL-адреса. Следующий элемент перечисляет всех говорящих:
Если атрибут asp-controller указан, а атрибут asp-action — нет, действием контроллера, связанным с выполняющимся представлением, будет заданное по умолчанию значение asp-action . Если asp-action параметр пропущен в предыдущей разметке, а вспомогательная функция тега привязки используется в представлении индекса Home контроллера( /Home ), то созданным HTML-кодом будет:
asp-action
Значение атрибута asp-action представляет имя действия контроллера, включенное в созданный атрибут href . Следующий элемент задает созданное значение атрибута href на странице динамика оценок:
Если атрибут asp-controller не указан, будет использоваться контроллер по умолчанию, вызывающий представление при выполнении текущего представления.
Если атрибут asp-action имеет значение Index , действия не добавляются к URL-адресу и вызывается метод Index по умолчанию. В контроллере, на который есть ссылка в asp-controller , должно существовать указанное действие (или заданное по умолчанию).
asp-route-
Рассмотрим следующее действие контроллера:
С шаблоном маршрута по умолчанию, определенным в Startup.Configure:
Представление MVC использует модель, предоставляемую действием:
Заполнитель
Предположим, префикс маршрута не входит в состав соответствующего шаблона маршрутизации, как в случае со следующим представлением MVC:
Следующий код HTML будет создан, так как элемент speakerid не найден в соответствующем маршруте:
Если атрибут asp-controller или asp-action не указан, применяется та же обработка по умолчанию, что и в атрибуте asp-route .
asp-route
Атрибут asp-route используется для связывания URL-адреса непосредственно с именованным маршрутом. С помощью атрибутов маршрутизации маршруту можно присвоить имя, как показано в классе SpeakerController и используется в его действии Evaluations :
В следующем элементе атрибут asp-route ссылается на именованный маршрут:
Вспомогательная функция тега привязки создает маршрут непосредственно к этому методу контроллера, используя /Speaker/Evaluations URL-адреса. Созданный HTML:
Если наряду с атрибутом asp-route указаны атрибут asp-controller или asp-action , созданный маршрут может отличаться от ожидаемого. Во избежание конфликта маршрута asp-route нельзя использовать вместе с атрибутами asp-controller или asp-action .
asp-all-route-data
Атрибут asp-all-route-data поддерживает создание словаря пар «ключ-значение». Ключ является именем параметра, а значение — значением параметра.
В следующем примере словарь инициализируется и передается в Razor представление. Кроме того, данные могут быть переданы с помощью модели.
Предыдущий код вызывает следующий код HTML:
Словарь asp-all-route-data предназначен для создания строки запроса, соответствующей требованиям перегруженного действия Evaluations :
Если ключи в словаре совпадают с параметрами маршрута, эти значения будут соответствующим образом заменены в маршруте. В качестве параметров запроса будут созданы другие несовпадающие значения.
asp-fragment
Атрибут asp-fragment определяет фрагмент URL-адреса, добавляемый к URL-адресу. Вспомогательная функция тега привязки добавляет символ решетки (#). Рассмотрим следующий элемент:
Хэштеги полезны при создании приложений на стороне клиента. Например, их можно использовать для простоты пометки и поиска на языке JavaScript.
asp-area
Атрибут asp-area указывает имя области, используемое платформой для определения соответствующего маршрута. Ниже приведен пример того, как атрибут asp-area приводит к повторному сопоставлению маршрутов.
Использование на Razor страницах
Razorобласти страниц поддерживаются в ASP.NET Core 2,1 или более поздней версии.
Пусть имеется следующая иерархия каталогов:
-
- wwwroot
- Области
- Сеансы
- Страницы
- _Виевстарт. cshtml
- Index.cshtml
- Index.cshtml.cs
- Страницы
- Сеансы
- Страницы
Разметка для ссылки на страницу индекса области сеансов Razor :
Для поддержки областей в Razor приложении для страниц выполните одно из следующих Startup.ConfigureServices действий в.
Задайте версию совместимости 2.1 или более позднюю.
Задайте для свойства Razor Пажесоптионс. алловареас значение true :
Использование в MVC
Пусть имеется следующая иерархия каталогов:
-
- wwwroot
- Области
- Блоги
- Контроллеры
- HomeController. CS
- Представления
- Home
- AboutBlog.cshtml
- Index.cshtml
- _Виевстарт. cshtml
- Home
- Контроллеры
- Блоги
- Контроллеры
При установке для атрибута asp-area значения Blogs перед маршрутами связанных контроллеров и представлений для этого тега привязки добавляется каталог Areas/Blogs. Исправления для ссылки на представление AboutBlog:
Для поддержки областей в приложении MVC в шаблон маршрута необходимо включить ссылку на область, если она существует. Этот шаблон представлен вторым параметром routes.MapRoute вызова метода во время запуска. Настройте:
asp-protocol
Атрибут asp-protocol предназначен для указания протокола (например, https ) в URL-адресе. Пример:
Имя узла в примере — localhost. При формировании URL-адреса вспомогательная функция тега привязки использует общедоступный домен веб-сайта.
asp-host
Атрибут asp-host предназначен для определения имени узла в URL-адресе. Пример:
asp-page
Атрибут ASP-Page используется со Razor страницами. Используйте его для определения значения атрибута href тега привязки для определенной страницы. Чтобы создать URL-адрес, перед именем страницы следует ввести символ косой черты (/).
Следующий пример указывает на страницу «участник» Razor :
Атрибут asp-page является взаимоисключающим с атрибутами asp-route , asp-controller и asp-action . Тем не менее asp-page можно использовать с asp-route-
asp-page-handler
Атрибут ASP-Page-Handler используется со Razor страницами. Он предназначен для связывания с обработчиками определенных страниц.
Рассмотрим следующий обработчик страниц:
Связанный элемент модели страницы ссылается на обработчик страниц OnGetProfile . Обратите внимание, что префикс On имени метода обработчика страниц опущен в значении атрибута asp-page-handler . Когда метод является асинхронным, суффикс Async также опускается.
Источник
Контроллеры
Контроллеры и их действия
Центральным звеном в архитектуре ASP.NET Core MVC является контроллер. При получении запроса система маршрутизации выбирает для обработки запроса нужный контроллер и передает ему данные запроса. Контроллер обрабатывает эти данные и посылает обратно результат обработки.
В ASP.NET Core MVC контроллер представляет обычный класс на языке C#, который наследуется от абстрактного базового класса Microsoft.AspNetCore.Mvc.Controller . По умолчанию проект ASP.NET Core MVC содержит как минимум один контроллер — HomeController:
В данном случае мы видим, что констроллер имеет конструктор, через который посредством механизма dependency injection передается сервис ILogger, используемый для логгирования. Также контроллер определяет три метода — Index, Privacy и Error.
При использовании контроллеров существуют некоторые условности. Во-первых, в проекте контроллеры помещаются в каталог Controllers . И во-вторых, по соглашениям об именовании названия контроллеров обычно оканчиваются на суффикс «Controller», остальная же часть до этого суффикса считается именем контроллера, например, HomeController. Но в принципе эти условности необязательны.
Но есть также и обязательные условности, которые предъявляются к контроллерам. В частности, класс контроллера должен удовлетворять как минимум одному из следующих условий:
Класс контроллера имеет суффикс «Controller»
Класс контроллера наследуется от класса, который имеет суффикс «Controller»
К классу контроллера применяется атрибут [Controller]
Если нам нужен еще один контроллер, то мы можем добавить в папку Controllers новый класс, который будет наследоваться от класса Controller . Либо мы можем использовать готовый шаблон Controller Class :
Контроллер, как и любой класс на языке C#, может иметь поля, свойства, методы. По умолчанию HomeController имеет четыре метода, которые можно назвать действиями . Действия контроллера — это публичные методы, которые могут сопоставляться с запросами. Например, стандартный контроллер содержит метод Index — он имеет модификатор public и поэтому может использоваться для обработки запроса.
Чтобы обратиться контроллеру из веб-браузера, нам надо в адресной строке набрать адрес_сайта/Имя_контроллера/Действие_контроллера . Так, по запросу адрес_сайта/Home/Index система маршрутизации по умолчанию вызовет метод Index контроллера HomeController для обработки входящего запроса. Например:
Однако такое сопоставление строки url с названием контроллера и его метода происходит благодаря системе маршрутизации. Если мы обратимся к классу Startup и его методу Configure() , то мы можем найти там определение единственного для приложения маршрута:
Метод endpoints.MapControllerRoute добавляет один маршрут с именем default и шаблоном «
Собственно поэтому система может соотнести запрос типа localhost:xxxx/Home/Index с контроллером и его действием.
Однако не все методы контроллера являются действиями. Контроллер также может иметь непубличные методы — такие методы не рассматриваются как действия и соответственно не могут соотноситься с запросами. Например, определим в контроллере следующий метод:
Поскольку его модификатор отличается от public , то мы не сможем обратиться к этому методу с запросом localhost:xxxx/Home/Hello . Хотя такие не публичные методы также могут быть полезными — в них можно определять какие-нибудь промежуточные вычисления и затем использовать в действиях контроллера. При этом если мы изменим модификатор метода на public , то метод Hello станет полноценным действием:
Атрибуты NonController, ActionName и NonAction
Возможно, сопоставление по умолчанию бывает не всегда удобно. Например, у нас есть класс в папке Controllers, но мы не хотим, чтобы он мог обрабатывать запрос и использоваться как контроллер. Чтобы указать, что этот класс не является контроллером, нам надо использовать над ним атрибут [NonController] :
Аналогично, если мы хотим, чтобы какой-либо публичный метод контроллера не рассматривался как действие, то мы можем использовать над ним атрибут NonAction :
Атрибут [ActionName] позволяет для метода задать другое имя действия. Например:
В этом случае чтобы обратиться к этому методу, надо отправить запрос localhost:xxxx/Home/Welcome. А запрос localhost:xxxx/Home/Hello работать не будет.
Типы запросов
В прошлой главе для обработки запросов использовалась следующая пара методов:
Несмотря на то, что здесь два разных метода, но они в соответствии с именем образуют одно действие Buy. Допустимо определять в контроллере методы с одним и тем же именем, только в этом случае они должны различаться по параметрам, как в данном случае.
Кроме того, методы в рамках одного действия могут обслуживать разные запросы. Для указания типа запроса HTTP нам надо применить к методу один из атрибутов: [HttpGet] , [HttpPost] , [HttpPut] , [HttpDelete] и [HttpHead] . Если атрибут явным образом не указан, то метод может обрабатывать все типы запросов: GET, POST, PUT, DELETE.
Источник
Почему /?action=report не работает?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как расширить ссылку из Controller/Action/Id до Contr/Action/Category/Id ?
Здравствуйте, Дорогие форумчане! Давно не брался за ASP, поэтому задаю несколько глупый и для.
Куда я должен вставить ON DELETE NO ACTION or ON UPDATE NO ACTION?
Сделал миграцию, бд не хочет обновляться, что-то требует, Что мне нужно сделать что-бы она не.
Ошибка каскадных таблиц (Specify ON DELETE NO ACTION or ON UPDATE NO ACTION)
Здравствуйте. Возникла проблема с созданием таблицы. Ошибка в Package Manager Console .
Почему в переменой Action остается 1?
Скажите plsss где ошибка . Timer1.Enabled = True Timer1.Interval = 500 Private Sub.
Не работает form action
При нажатии на клавишу ничего не происходит. Сайт не перенаправляется. Что не так? Как исправить? .
Split Action Bar не работает
Здравствуйте, я создал иконку в actionbar, файл res/menu/menu_main.xml и хочу чтобы она находилась.
Delphi 10 Reve Report/Fast Report Ado Sql
пожалуйста помогите вывести бд на печать через rave или fast report, почитал тут темы и мануал по.
Как сделать чтобы программа могла работать с отчетами Crystal Report на компьютере где нет VS и Crystal Report
Как сделать чтобы программа могла работать с отчетами Crystal Report на компьютере где нет VS и.
Работа с отчетами Crystal Report на компьютере где нет VS и Crystal Report
Как сделать чтобы программа могла работать с отчетами Crystal Report на компьютере где нет VS и.
Почему смена текста работает только один раз? Что неправильно в коде и почему?
Нужно чтобы при щелчке мыши на поверхности кнопки текст метки Label изменялся на текст окна.
Источник