Нововведения в ASP.NET MVC 2 - CodeHelper

Нововведения в ASP.NET MVC 2

4

После недавнего выхода релиз-кандидата ASP.NET MVC 2 можно говорить, что никакие API до релиза уже не изменятся. А значит можно задумываться о применении новой версии в реальных проектах. В этом вопросе хотелось собрать информацию об отличиях версии 2 от предыдущего релиза.

Новые ответы


0

Отдельный пласт нововведений — поддержка шаблонов для отображения и редактирования модели целиком или отдельных ее свойств. Вот очень хороший обзор этой возможности на хабре: Шаблоны отображения и редактирования данных в ASP.NET MVC 2

3

Строго типизированные HTML-хелперы. Кроме того, они теперь возвращают не String, а MvcHtmlString.

Updated:

Вот список:

 - DisplayFor()
 - DisplayTextFor()
 - EditorFor()
 - CheckBoxFor()
 - HiddenFor()
 - PasswordFor()
 - RadioButtonFor()
 - TextBoxFor()
 - LabelFor()
 - DropDownListFor()
 - ListBoxFor()
 - TemplateFor()
 - TextAreaFor()
 - ValidationMessageFor()

Как видно, все хелперы заканчиваются суффиксом For (хотя это и не является обязательным условием). Все они принимают в качестве аргумента объект типа Expression<Func<TModel, TValue>>. Т.е. лямбда-выражение, где TModel обычно представляет тип, которым строго типизирован View. Кроме того, некоторые хелперы принимают еще аргументы, специфичные для конкретного элемента (например IEnumerable<SelectListItem> для DropDownListFor())

Использование довольно просто:

Есть класс:

public class RegisterModel
{
    [DisplayName("User name")]
    public string UserName { get; set; }

    [DisplayName("Email address")]
    public string Email { get; set; }

    [DisplayName("Password")]
    public string Password { get; set; }

    [DisplayName("Confirm password")]
    public string ConfirmPassword { get; set; }
}

Далее в строго типизированном этим классом виде пишем:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
         Inherits="System.Web.Mvc.ViewPage<MvcApplication2.Models.RegisterModel>" %>
    ...
    <%= Html.LabelFor(m => m.UserName) %>
    <%= Html.TextBoxFor(m => m.UserName) %>
    <%= Html.ValidationMessageFor(m => m.UserName) %>

Пример взят из создаваемого по-умолчанию проекта ASP.NET MVC 2 (с некоторыми упрощениями)

Чак Норрис

А можно по подробнее про то, какие именно хелперы появились и как их использовать?

safonovea

Можно, но нужно проявить немножко терпения :) Чуть позже подредактирую ответ.

Чак Норрис

А что такое MvcHtmlString и что какая от него выгода?

2

Скандально известная фича RenderAction. Это набор extension-методов (файл ChildActionExtensions), позволющих виду «отрисовывать» внутри себя результат работы любого экшена. Выглядит это примерно так:

<%Html.RenderAction("Controller", "Action"); %>

Как уже упоминалось, эта возможность заимствована из Ruby, откуда она была выкинута всилу своей порочности.

1

Очень важная фича — MVC 2 не конфликтует с первой версией! Значит на одном компьютере можно установить обе версии. При этом в Visual Studio можно создать проект, использующий любую из установленных версий.

2

Вот ряд изменений, которые есть в ASP.NET MVC 2 RC :

  • скрипты валидации перемещны в отдельный файл;
  • скрипты валидации теперь можно включать как сначала разметки, так и внизу для клиентской оптимизации;
  • скрипты валидации поддерживают глобализацию;
  • метод Html.ValidationSummary может теперь отображать не сразу все ошибки валидации, а только те, которые вычисляются в модели, чтобы остальные показывались рядом с элементами управления и не дублировались;
  • шаблоны T4 в Visual Studio теперь генерируют код специфичный для версии .NET Framework
  • разметка генерируемая через Add View теперь содержит использование Editor, EditorFor, Display и DisplayFor;
  • теперь можно декларативно задать поведение кнопки и ее влияние на валидацию формы, вызывает валидацию или нет;
  • теперь можно декларативно управлять тем, когда вызывается валидация: во время ввода, после смены фокуса, перед отправкой формы;
  • был исключен метод Html.Substitute;
  • инсталятор теперь не производит маппинг скриптов для IIS6 и IIS7 в режиме Integrated Mode, при нужде инструменты для самостоятельного маппинга лежат на codeplex.com.

Cписок ключевых фич, которые войдут в ASP.NET MVC 2. Среди них: Areas, ассинхронные Controller Actions, улучшенная поддержка Dynamic Data, улучшения в кешировании, валидации и другое.


v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.