UR.ANUS
Asp.net mvc framework
вернуться

Магдануров Гайдар Ильдарович

Шрифт:

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 приведена заготовка вспомогательного метода, отображающего элемент управления для ввода даты.

Листинг 5.10. Вспомогательный метод для отображения элемента для ввода даты

using System.Web.Mvc;

public static class DataPickerHelper {

public static string DatePicker(this HtmlHelper html,

string id, string text)

{

}

}

Такой метод может быть использован в коде представления через синтаксис

<%= Html.DatePicker("id", "name") %>.

Непосредственная реализация этого метода может быть разной. Давайте посмотрим на то, как можно подойти к созданию такого простого элемента, как набор выпадающих списков для выбора даты.

Конкатенация строк

Самый очевидный способ — сгенерировать разметку конкатенацией строк. Код для этого метода приведен в листинге 5.11.

Листинг 5.11. Реализация метода DatePickerc помощью конкатенации строк

using System.Web.Mvc;

using System.Text;

using System;

using System.Globalization;

public static class DataPickerHelper

{

public static string DatePicker(this HtmlHelper html, string id)

  • Читать дальше
  • 1
  • ...
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • ...

UR.ANUS - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • support@anus.bid