Наконец-то вышел комьюнити превью расширений ASP.NET 3.5
В него входит целый набор интересных и полезных вещей:
ASP.NET MVC
Это та вещь, которую лично я хотел посмотреть больше всего - Model-View-Controller фреймворк для ASP.NET.
Кратко: вся логика работы с моделью располагается в контроллерах, каждый раз, когда пользователь приходит по адресу, скажем, "/Products/Categories/75" запрос автоматически обрабатывается классом контроллера, который может иметь примерно такую структуру:
public class ProductsController : Controller
{
[ControllerAction]
public void Categories(int parentId)
{
//TODO: Do something
this.RenderView("Category");
}
}
При этом весь URL Mapping "ложится на плечи" фреймворка. Естественно, это далеко не все, там и этот самый URL Mapping настраивается, и View с параметрами (а иначе что отображать-то?), и автоматическая загрузка данных из формы view в объект модели, и юнит-тестирование, и многое другое.
Подробнее можно прочитать (с картинками! ;)) "от первого лица":
ASP.NET MVC Framework (Part 0): What is it?
ASP.NET MVC Framework (Part 1): Building an MVC Application
ASP.NET MVC Framework (Part 2): URL Routing
ASP.NET MVC Framework (Part 3): Passing ViewData from Controllers to Views
ASP.NET MVC Framework (Part 4): Handling Form Edit and Post Scenarios
Поддержка Silverlight и Ajax
Для того, чтобы сделать на сайте, например, видеоплейер, достаточно добавить контрол:
<asp:MediaPlayer
MediaSource=http://mysite/mymedia
MediaSkin="Professional" />
Естественно, это будет Silverlight, который будет работать на Windows и MacOS в Сафари, Файрфоксе и, разумеется, ИЕ.
Кроме этого, добавился элемент <asp:Silverlight ...>, позволяющий легко "подключать" silverlight-объекты.
Что же касается Ajax, то тут существенно улучшена поддержка истории браузера.
Dynamic Data
Некоторое время назад я писал о том, что неплохо было бы иметь контрол, отображающий данные переданного объекта (любого) с возможностью валидации. И даже делал такой контрол сам.
Теперь это возможно с помощью "фичи", которая называется "dynamic data". Здесь мы имеем ряд новых контролов: DynamicDetailsView, DynamicFormView, DynamicGridView и DynamicListView, которые позволят добиться и этого и еще всякого другого.
Например, если мы напишем:
<DyanamicGridView id="DynamicGridView" runat="server"
DataSourceID="LinqDataSource1" />
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="NorthwindDataContext"
TableName="Products" />
то получим грид, отображающий таблицу Products (представленную в виде модели LINQ to SQL, разумеется) с возможностью изменения\добавления\удаления данных непосредственно в контексте данных (NorthwindDataContext) и валидацией.
Замечательно так же и то, что в случае, если поля в базе данных связаны по ключу, то вместо безликого числа CategoryId в списке будет отображаться имя этой самой категории, взятое из связанной таблицы!
Правила же валидации примерно такие же, как и те, что делал я в своем контроле:
- Для строкового значения валидируется длина строки
- Для поля, значением которого не может быть null, валидируется обязательность заполнения
- Для полей типа даты, дробных или целых чисел выполняется валидация типа.
Более того, возможности можно расширить с помощью атрибутов Required, Range, Regex и DisplayFormat, "пометив" ими объект модели самостоятельно.
Подробнее о расширениях ASP.NET 3.5 можно посмотреть и почитать на страницах QuickStart: http://quickstarts.asp.net/3-5-extensions/default.aspx