![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Урок 8. View, Razor, страница ошибки.
Цель: Научиться делать вывод данных в html, использование Razor. Helperы. PageableData. Динамические формы. RedirectToLogin, RedirectToNotFoundPage. Страница ошибки. RssActionResult. Основа Итак, рассмотрим как устроена часть View. В контроллере все action-методы возвращают тип ActionResult. И для вывода результата мы используем: return View(modelData); Основными параметрами View может быть: · Имя, обычно оно совпадает с именем action-метода. В случае если надо вызвать иной по имени View, то используется конструкция return View(“ViewName”, modelData). · Данные для отображения во View. Необязательный параметр. При передаче во View этот объект данных будет обозначаться Model. Для связывания типа данных во View указывается ожидаемый тип данных: @model LessonProject.Model.User · Layout. Необязательный параметр. При указании этого параметра по данной строке найдется страница-контейнер и вызовется. View-часть будет обработана методом RenderBody() Layout = " ~/Areas/Default/Views/Shared/_Layout.cshtml" В _Layout.cshtml: < /div>
@RenderBody()
< div id=" PopupWrapper" > < /div>
Выбор, какой же View использовать происходит следующим образом: · Ищется в папке /Areas/[Area]/Views/[ControllerName]/ · Ищется в папке /Areas/[Area]/Views/Shared/ · Ищется в папке /Views/[ControllerName]/ · Ищется в папке /Views/Shared/ приступим к изучению. Razor При создании View есть выбор между двумя движками: ASPX и Razor. Первый мы не будем использовать в дальнейшем, поэтому поговорим о Razor.
ASPX был громозким движком с тегами < % %> для выполнения кода и < %: %> для вывода данных. Razor использует конструкцию @Model.Name. Т.е. всё, что начинается с @ переводит в режим или исполнения кода, или вывода данных @foreach() {…}, или @if() { … } else { … }: @if (Model.Any()) { < p> Список< /p> }
@foreach (var role in Model) { < div class=" item" > < span class=" id" > @role.ID < /span> < span class=" name" > @role.Name < /span> < span class=" Code" > @role.Code < /span> < /div> } Внутри { } находятся теги – это маркер того, что это шаблон. Для простого выполнения кода внутри шаблона используем структуру @{ code }, для корректного вывода данных внутри атрибутов или текстом конструкция - @(string result): @{ int i = 0; } @foreach (var role in Model) { < div class=" item @(i % 2 == 0? " odd": " ")" > < span class=" id" > @role.ID < /span> < span class=" name" > @role.Name < /span> < span class=" Code" > @role.Code < /span> < /div> i++; } Чтобы вывести не теговый текст, нужно использовать псевдотеги < text> < /text>: @foreach (var role in Model) { @role.Name< text>, < /text> } Для вывода html-текста – или должна возвращаться MvcHtmlString, или использовать конструкцию @Html.Raw(html-string-value), иначе текст будет выведен с экранированием тегов.
|