Comments 71
За статью спасибо, но писать надо не Микрософт, а Майкрософт, тем более, если Вы собирались публиковать это в печатном издании.
UFO landed and left these words here
я не люблю писать «Майкрософт», поэтому поправил на Microsoft, дабы угодить всем
всегда и везде говорю и пишу «Микрософт», тоже не вижу в этом ничего плохого
Осилил, интересно.
С точки зрения логичности изложения, переход от раздела Версии MVC Framework сразу к практическим советам выглядит слишком резким. В этом месте скорее ожидаешь прочитать про то, как строится URL, про Action, про Route — иными словами, про то, из чего все-таки состоит MVC в исполнении Майкрософт и как с ним оперировать. А вы сразу — Как задать на странице html-элемент select. :)
Новичку наоборот важно как можно скорее начать практиковаться.
может быть, вы правы
статья — это больше сборник советов, чем описание работы MVC

*может быть неудачно назвал
Да, статья хороша как сборник советов и ответов на первые возникающие вопросы по ASP.NET MVC Framework у новичков. Описаний работы MVC в инете куча, а доступных новичку квикстартов маловато.
Спасибо, узнал много нового о MS :) Ничего особо оригинального, чего нет в тех же PHP фреймворках, не увидел, но судя по всему любители «моногенных» решений должны быть в восторге.
конечно, ничего особо нового не может быть, все же фреймворк свежий и еще даже не вышел в финальной версии
Нет, серьезно радует, что если вдруг понадобится портировать или писать с нуля для .net, то не нужно будет изменять образ мышления. Грубо говоря надо просто преодолеть различия синтаксиса языков (а может уже и язык привычный портирован) и тонкостей реализации, но нежно менять архитектуры приложения
Новые идеи сложно придумать сейчас на этапе становления MVC Framewrok. К тому же, существующие MVC Framework для Java, PHP, Perl и т.д. содержат много того, что уже просто обязан содержать MVC Framework, поэтому их нужно догнать по функционалу. А вот уже с версии 2.0 и далее можно будет заниматься активными инновациями.
у вас есть что-то инсайдерское о второй версии? поделитесь :)

* или хотя бы есть информация о дате выхода новой версии «первого» MVC?
К сожалению, инсайдерское только под NDA для MVP :)

Но про MVC могу чуть-чуть сказать, что есть большое желание выпустить релиз к MIX (март этого года), и очень быстро после релиза выпустить CTP версии 2.0. Но официально такого плана нет.
Я наоборот рад, что нет ничего оригинального, что структура приложения практически не изменяется, при необходимости несложно будет портировать с .net скажем на symfony или наоборот
Рано или поздно какие-то новые идеи будут реализованы. Сейчас пока есть только подход к скэффолдингу — Dynamic Data, но я уверен, что будет больше декларативности добавлено.
XaocCPS, спасибо за статью :)

Еще подскажите, пожалуйста, как можно реализовать следующие вещи:
1) общие объекты для всех страниц, которые в классическом ASP.NET вставлялись в Мастерпейдж и инициализировались(заполнялись данными т.п.) в MasterPage.Page_Load? Не будешь же вставлять код инициализации во все контроллеры…

2) Как можно передать юзерконтролу типизированные параметры? Опять-таки, из классики: есть юзер-контрол, который в зависимости от параметров решает, как и что ему выводить (событие Page_Load юзер-контрола), юзер-контрол вставляется в asp:Repeater, и выглядит типа

Заранее спасибо за ответ.

Собственно, это две вещи, которые пока не позволяют делать новые проекты на MVC, а хотелось бы, при его прочих достоинствах.
1. в mvc тоже есть мастерпейдж
2. public partial class IntroBox: ViewUserControl — определяет контрол с типом модели MyModel
<%= Html.RenderPartial(«IntroBox», ViewData.Model.DataForControl); %> — рисуем контрол передвая ему данные, которые содержаться в модели страницы
А в Мастерпейдже в MVC есть событие Page_Load?

Т.е. фактически стоит задача выполнять некое действие, когда человек попадает на все страницы, связанные с этим мастерпейджем (но контроллеры разные).
вы можете определить базовый контроллер, а все остальные контроллеры определять от него и обрабатывать вообще все действия
или на уровне фабрики контроллеров написать код для инъекции глобальных задач для набора страниц.
я на нем курсовую писал. Мне бы эту статью пару месяцев назад, не пришлось бы столько вникать в блоги Гюттри и иже с ним.
ASP.NET VMC — отличная вещь если вы — программист C# или фанат майкрософта. Во всем остальном пока выигрывают аналогичные фреймворки на руби и пхп. Надеюсь майкрософт сделает из него конфетку.
А какое мнение у вас от: JSF, web-потока Shale, Facelets, Tiles? Каркас интеграции JSF и EJB3 (Hibernate) не заинтересовал?
ой, я как-то с явой дружу только на уровне helloworld. Я сранивал asp.net mvc только с рельсами и знакомыми мне php фреймворками. ни в коем случае не холиварю, ибо люблю C# и asp.net, но работа есть по php)
простите за вопрос не по теме.
А что случилось с c't? Я его уже 6й месяц у себя в городе не могу найти, а ведь журнал очень хороший.
П.С. А статья понравилась, спасибо
по источникам из журнала, c`t накрыл кризис
большего мне не известно
Недавно пробовал запустить все это на линуксе под mono 2.2. Полдня портаченого времени и я таки запустил его на xsp2. Правда не работал роутинг… хотя можно было подсунуть свой метод — я спасовал =) В roadmap на mono сказано, что поддержка asp.net mvc будет в 2.6(july 2009). Ну да ладно, пока оно еще бета — можно подождать
с удовольствием бы почитал что-нибудь про моно на Хабре
опыт, трудности, отличия, сильные и слабые стороны… все интересно
К сожалению, катастрофически нехватает времени. Да и не такой уж большой опыт у меня с mono. Но скажу, прогресс разработки mono — огромный. ...MonoDevelop, GTK, ASP.NET, Gendarme, Monoxide и все это опенсоурс

Слабые стороны — пока небольшое комюнити
Сильные стороны — opensource; 3rdparty; когда сидиш, смотриш на работающий проект linux + csharp и думаеш — причем здесь майкрософт?
считаю, Мироксофту надо поддерживтаь Mono-комьюнити тем или иным способом
нанять чтоли человека, который бы освещал все что связано с mono
лично я просто не натыкаюсь на информацию, а специально искать нет времени, да и особого желания, поскольку применять пока негде

почитать бы чужой опыт было бы очень интересно
Сейчас mono — узкий профиль. Но я буду чрезмерно рад, когда со временем Novell будет иметь в своем арсенале чистый, отлаженый и вылизаный mono. И считаю, что это неизбежно. Спасибо тебе, Мигель
>лично я просто не натыкаюсь на информацию, а специально искать нет времени
есть форумы nabble, есть lor, кстати сегодня там и про moonlight
туда надо идти специально
я имел в виду, что на тех ресурсах которые посещаю я, многопрофильных, про моно пишуту крайне редко (а на хабре вовсе не пишут)
Это точно — до сих пор новости о том, что версия mono 2.2 вышла нет. А там появилась такая вкусность как REPL для C#.
А может быть опишите как заставили работать под Linux? Какие подводные камни встретились? Я бы поделился с разработчиками информации и они порадовались бы :)
Конечно. Итак нужно mono, xsp2 и сам asp.net mvc. Желательно самых новых версий.

Я перенес шаблонный mvc проект, который сгенерировал visualstudio. далее скопировал mvc библиотеки System.Web.Abstractions.dll, System.Web.Mvc.dll и System.Web.Routing.dll(они где-то в program files) в директорию Lib в корне проекта.

Web.config и csproj негодные, их придется править вручную. Из csproj я вырезал ненужные референсы(оставил необходимые, дамп — dumpz.org/4930/), visual studio targets и все project settings. Обязательно вырезать версию и токен из референса System.Web.Mvc.dll. В Web.config оставил только customErrors для отладки и pages для корректной работы хелперов.

Из-за того что библиотеки mvc не добавляются в GAC пришлось скопировать их в директорию bin в корне проекта. И заключающий этап это xbuild (входит в моно). Он сделает длл нашего проекта в bin. Запускаем xsp2…
Ловите +1 в карму. Может быть будете что-нибудь интересное писать?
Опыт с Mono — очень интересно, было бы здорово побольше об этом знать.
По моим наблюдениям в комментариях, mono интересен многим. Конечно, очень жаль, что на хабре так мало информации. Но, думаю, со временем, смогу писать на эту тему.
Кстати, кто знает, кроме шаблонизации, существуют ли способы безболезненной замены представления? Например, был вывод в виде HTML, а стал в виде JSON, и основные алгоритмы вывода дублировать чтобы не пришлось.
было

public JsonResult Test()
{
string[] test = {«Первый»,«Второй»,«Третий»};
return Json(test);
}
извините

было
public ActionResult Test()
{
string[] test = {«Первый»,«Второй»,«Третий»};
ViewData = test;
return View();
}
стало то что выше
Это только для простейших случаев, а если представление оперирует большим количеством данных с помощью разных итераторов, нужно постоянно копировать обход этих данных, но уже для другого представления, а этого хочется избежать.
ActionResult может возвращать как html представление(View), так и Json. Задача сводится к тому, что бы сериализовать данные к нужному формату(xml или json), а return отдать то что нужно в итоге.
public ActionResult Test(string flag)
{
//формирование данных
string[] test = {«Первый»,«Второй»,«Третий»};
if(flag == «html)
{
ViewData[»data"] = test;
return View();
}
else
{
//если много сложных данных, сериализуем.
return Json(test);
}
}
русскоязычных нет
готовится к выпуску ряд книг на английском
Я вот собрался тут написать книгу, но дело идет сильно медленнее, чем я ожидал. Нет желания присоединиться и стать соавтором? :)
Может кто сталкивался с реализацией деревьев (типа TreeView) в ASP.NET MVC?

Заранее спасибо!
элементы dl вложенные друг в друга + js не подойдут?
или вам универсальное решение нужно?
а в 6 IIS работает описанный вами в последней части метод редиректа на страницу с ошибками?
url mapping настроен, clean urls тоже настроены (aspnet_isapi.dll).
Продолжает выбрасывать Эксепшены, и обычная страница с ошибкой на 404.
вы проверяете локально? по идее все должно работать, но честно говоря на iis 6 не тестировал
да, все работает, видимо гдето ступил вчера.

кстати, для того чтобы с неверных УРЛ переправлял на /error/http404
не нужно добавлять дополнительный маршрут.

routes.MapRoute(«Error», "{*url}", new
{
controller = «Error»,
action = «Http404»
});
Only those users with full accounts are able to leave comments. Log in, please.