пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Шаблонные хелперы. Шаблоны формирования. Работа со сложными моделями.

Шаблонные хелперы

Шаблонные хелперы не генерируют определенный элемент html. Шаблонные хелперы смотрят на свойство модели и генерируют тот элемент html, который наиболее подходит данному свойству, исходя из его типа и метаданных.

В ASP.NET MVC имеются следующие шаблонные хелперы:

-Display

Создает элемент разметки для отображения значения указанного свойства модели: Html.Display("Name")

-Editor

Создает элемент разметки для редактирования указанного свойства модели: Html.Editor("Name")

-DisplayText

Создает выражение для указанного свойства модели в виде простой строки: Html.DisplayText("Name")

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

-DisplayForModel

Создает поля для чтения для всех свойств модели: Html.DisplayForModel()

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

Шаблоны формирования

Поскольку зачастую разработчики вынуждены создавать представления для одних и тех же действий: добавления, изменения, удаления и просмотра записей из БД, то команда разработчиков MVC внедрила такую функцию, как шаблоны формирования (scaffolding templates). Эти шаблоны позволяют по заданной модели и контексту данных сформировать всю необходимую разметку для представлений и контроллера, с помощью которых можно управлять записями в БД.

По умолчанию при создании контроллера нам доступны следующие шаблоны:

-Empty MVC Controller. Этот шаблон добавляет в папку Controllers класс, производный от класса Controller с указанным именем. Единственное действие, которое выполняет этот контроллер - это действие Index, которое по умолчанию не заключает никакого функционала. Данный шаблон не создает представлений

-MVC Controller with Empty Read/Write Actions. Этот шаблон добавляет в проект контроллер, который содержит методы Index, Details, Create, Edit и Delete. Однако эти методы фактически никакой полезной работы не выполняют, и необходимо самим создать для них код и представления для каждого из этих методов.

-MVC Controller with Read/Write Actions and Views, Using Entity Framework. Этот шаблон создает контроллер с методами Index, Details, Create, Edit и Delete, а также все необходимые представления для этих действий и добавляет код для извлечения информации из базы данных. Что очень полезно, так как нам не надо писать соответствующий код, как в предыдущем разделе.

-Empty API Controller. Этот шаблон пустой контроллер, производный от класса ApiController. Класс ApiController был введен в MVC 4 и используется в проектах типа Web API - своего рода веб-служб.

И др.

Работа со сложными моделями

Пример для сложной модели

Cshtml-файл:

@model NavigationProperty.Models.Player

 

@{

    ViewBag.Title = "Добавление игрока";

    Layout = "~/Views/Shared/_Layout.cshtml";

}

 

<h2>Добавление нового игрока</h2>

 

@using (Html.BeginForm())

{

    <fieldset>

        <legend>Футболист</legend>

 

        <p>

            Имя игрока <br />

            @Html.EditorFor(model => model.Name)

        </p> 

        <p>

            Позиция на поле  <br />

            @Html.EditorFor(model => model.Position)

        </p>

        <p>

            <input type="submit" value="Добавить игрока" />

        </p>

    </fieldset>

}

<div>

    @Html.ActionLink("К списку игроков", "Index")

</div>

Контроллер:

[HttpGet]

public ActionResult Create()

{

    SelectList teams = new SelectList(db.Teams, "Id", "Name");

    ViewBag.Teams = teams;

    return View();

}

[HttpPost]

public ActionResult Create(Player player)

{

    db.Players.Add(player);

    db.SaveChanges();

    return RedirectToAction("Index");

}

 

 

 

 


12.01.2019; 19:52
хиты: 93
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь