Чтение онлайн

на главную - закладки

Жанры

Шрифт:

<label for="ProductName">

Название:

</label>

<%= Html.TextBox("ProductName", Model.ProductName) %>

<%= Html.ValidationMessage("ProductName", "*") %>

<label for="UnitPrice">

Цена:

</label>

<%= Html.TextBox("UnitPrice",

String.Format("{0:F}", Model.UnitPrice)) %>

<%= Html.ValidationMessage("UnitPrice", "*") %>

<label for="UnitsInStock">

На складе:

</label>

<%= Html.TextBox("UnitsInStock", Model.UnitsInStock) %>

<%= Html.ValidationMessage("UnitsInStock", "*") %>

<label for="UnitsOnOrder">

Заказано:

</label>

<%= Html.TextBox("UnitsOnOrder", Model.UnitsOnOrder) %>

<%= Html.ValidationMessage("UnitsOnOrder", "*") %>

<input type="submit" value="Save" />

</fieldset>

<% } %>

<div>

<%=Html.ActionLink("K списку товаров", "Index") %>

</div>

</asp:Content>

В листинге 5.8 методы Html.ValidationMessage вызываются co вторым строковым параметром, указывающим сообщение, которое должно быть отображено пользователю в случае наличия ошибки в коллекции ModelState. В результате форма, заполненная с ошибками, будет выглядеть так, как показано на рис. 5.2.

Для того чтобы сообщение об ошибке было выведено непосредственно в месте вызова метода Html.ValidationMessage, метод нужно вызывать без указания второго параметра Html.ValidationMessage("UnitPrice"). Результат приведен на рис. 5.3.

Стоит отметить, что если в коде представления не используется строготипизированная привязка к свойствам модели, то привязка к данным осуществляется автоматически, и в этом случае при возникновении ошибок нет необходимости передавать объект модели представлению через метод View, как это было сделано в листинге 5.7. То есть фрагмент кода из листинга 5.7 может быть написан так, как указано далее. Листинг 5.9 демонстрирует код представления, не использующего привязку к свойствам объекта модели Model.

if (IModelState.IsValid)

{

// есть ошибки, еще раз

// показать форму редактирования

return View;

}

Листинг 5.9. Представление Edit.aspx без привязки к свойствам объекта Model

<%@ Page Title="" Language="C#"

MasterPageFile="~/Views/Shared/Site.Master"

Inherits="System.Web.Mvc.ViewPage<MvcViewsDemo.Models.Product>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

Edit

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>

Редактирование сведений о товаре

</h2>

<%= Html.ValidationSummary("при редактировании сведений

о товаре произошли ошибки.") %>

<% using (Html.BeginForm)

{%>

<fieldset>

<legend>Редактирование сведений о товаре</legend>

<label for="ProductID">

Код продукта:

</label>

<%= ViewData.Eval("ProductID") %>

<%= Html.Hidden("ProductID")%>

<label for="ProductName">

Название:

</label>

<%= Html.TextBox("ProductName") %>

<%= Html.ValidationMessage("ProductName") %>

<label for="UnitPrice">

Цена:

</label>

<%= Html.TextBox("UnitPrice") %>

<%= Html.ValidationMessage("UnitPrice") %>

<label for="UnitsInStock">

На складе:

</label>

<%= Html.TextBox("UnitsInStock") %>

<%= Html.ValidationMessage("UnitsInStock") %>

<label for="UnitsOnOrder">

Заказано:

</label>

<%= Html.TextBox("UnitsOnOrder") %>

<%= Html.ValidationMessage("UnitsOnOrder") %>

<input type="submit" value="Save" />

</fieldset>

<% } %>

<div>

<%=Html.ActionLink("K списку товаров", "Index") %>

</div>

</asp:Content>

Примечание

Важно обратить внимание, что при использовании кода, аналогичного приведенному в листинге 5.9, поиск значений элементов формы будет осуществляться через ViewData.Eval, и значение ViewData["SomeProperty"] имеет больший приоритет, чем ViewData.Model.SomeProperty. Поэтому, во избежание трудноуловимых ошибок, при создании кода контроллера стоит с особенной тщательностью относиться к тому, как передаются данные — через свойства объекта-модели или через коллекцию ViewData.

***************************

Создание собственного вспомогательного метода

Поскольку вспомогательные методы — обычные методы расширения класса HtmlHelper, принимающие произвольный набор параметров и возвращающие строковые значения, то создать свой вспомогательный метод не составляет труда. Например, в листинге 5.10 приведена заготовка вспомогательного метода, отображающего элемент управления для ввода даты.

Поделиться:
Популярные книги

Архимаг. Пробуждение. Трилогия

Рудазов Александр
56. В одном томе
Фантастика:
научная фантастика
9.32
рейтинг книги
Архимаг. Пробуждение. Трилогия

Алексей Михайлович

Сахаров Андрей Николаевич
4. Романовы. Династия в романах
Проза:
историческая проза
5.80
рейтинг книги
Алексей Михайлович

Антипсихология

Ивакин Алексей Геннадьевич
Научно-образовательная:
психология
6.00
рейтинг книги
Антипсихология

Война Калибана

Кори Джеймс С. А.
2. Expanse
Фантастика:
научная фантастика
космическая фантастика
7.93
рейтинг книги
Война Калибана

Романы. Повести. Рассказы. В 2 томах. Том 2

Верн Жюль Габриэль
Фантастика:
научная фантастика
5.00
рейтинг книги
Романы. Повести. Рассказы. В 2 томах. Том 2

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Троелсен Эндрю
Компьютеры и Интернет:
программирование
5.00
рейтинг книги
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Дикари Ойкумены.Трилогия

Олди Генри Лайон
Дикари Ойкумены
Фантастика:
космическая фантастика
7.00
рейтинг книги
Дикари Ойкумены.Трилогия

Переплет 13

Уолш Хлоя
1. Парни из школы Томмен
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Переплет 13

"Фантастика 2025-10". Книги 1-31

Вальтер Макс
Фантастика 2025. Компиляция
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Фантастика 2025-10. Книги 1-31

Газлайтер. Том 23

Володин Григорий Григорьевич
23. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.40
рейтинг книги
Газлайтер. Том 23

Шерлок Холмс. Большой сборник

Дойл Артур Конан
Детективы:
классические детективы
8.34
рейтинг книги
Шерлок Холмс. Большой сборник

Пламенев. Книга IX

Карелин Сергей Витальевич
9. Пламенев
Фантастика:
аниме
уся
сказочная фантастика
фэнтези
фантастика: прочее
5.00
рейтинг книги
Пламенев. Книга IX

Поэтика Ф. М. Достоевского: опыт интерпретации

Тяпугина Наталия Ю.
Научно-образовательная:
языкознание
7.00
рейтинг книги
Поэтика Ф. М. Достоевского: опыт интерпретации

Эммануэль

Арсан Эммануэль
1. Эммануэль
Любовные романы:
эро литература
7.38
рейтинг книги
Эммануэль