я не люблю писать «Майкрософт», поэтому поправил на Microsoft, дабы угодить всем
всегда и везде говорю и пишу «Микрософт», тоже не вижу в этом ничего плохого
Осилил, интересно.
С точки зрения логичности изложения, переход от раздела Версии MVC Framework сразу к практическим советам выглядит слишком резким. В этом месте скорее ожидаешь прочитать про то, как строится URL, про Action, про Route — иными словами, про то, из чего все-таки состоит MVC в исполнении Майкрософт и как с ним оперировать. А вы сразу — Как задать на странице html-элемент select. :)
Да, статья хороша как сборник советов и ответов на первые возникающие вопросы по ASP.NET MVC Framework у новичков. Описаний работы MVC в инете куча, а доступных новичку квикстартов маловато.
Спасибо, узнал много нового о MS :) Ничего особо оригинального, чего нет в тех же PHP фреймворках, не увидел, но судя по всему любители «моногенных» решений должны быть в восторге.
Нет, серьезно радует, что если вдруг понадобится портировать или писать с нуля для .net, то не нужно будет изменять образ мышления. Грубо говоря надо просто преодолеть различия синтаксиса языков (а может уже и язык привычный портирован) и тонкостей реализации, но нежно менять архитектуры приложения
Я наоборот рад, что нет ничего оригинального, что структура приложения практически не изменяется, при необходимости несложно будет портировать с .net скажем на symfony или наоборот
Еще подскажите, пожалуйста, как можно реализовать следующие вещи:
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); %> — рисуем контрол передвая ему данные, которые содержаться в модели страницы
я на нем курсовую писал. Мне бы эту статью пару месяцев назад, не пришлось бы столько вникать в блоги Гюттри и иже с ним.
ASP.NET VMC — отличная вещь если вы — программист C# или фанат майкрософта. Во всем остальном пока выигрывают аналогичные фреймворки на руби и пхп. Надеюсь майкрософт сделает из него конфетку.
ой, я как-то с явой дружу только на уровне helloworld. Я сранивал asp.net mvc только с рельсами и знакомыми мне php фреймворками. ни в коем случае не холиварю, ибо люблю C# и asp.net, но работа есть по php)
простите за вопрос не по теме.
А что случилось с c't? Я его уже 6й месяц у себя в городе не могу найти, а ведь журнал очень хороший.
П.С. А статья понравилась, спасибо
Недавно пробовал запустить все это на линуксе под 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. И считаю, что это неизбежно. Спасибо тебе, Мигель
туда надо идти специально
я имел в виду, что на тех ресурсах которые посещаю я, многопрофильных, про моно пишуту крайне редко (а на хабре вовсе не пишут)
Конечно. Итак нужно 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…
По моим наблюдениям в комментариях, mono интересен многим. Конечно, очень жаль, что на хабре так мало информации. Но, думаю, со временем, смогу писать на эту тему.
Кстати, кто знает, кроме шаблонизации, существуют ли способы безболезненной замены представления? Например, был вывод в виде HTML, а стал в виде JSON, и основные алгоритмы вывода дублировать чтобы не пришлось.
Это только для простейших случаев, а если представление оперирует большим количеством данных с помощью разных итераторов, нужно постоянно копировать обход этих данных, но уже для другого представления, а этого хочется избежать.
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);
}
}
а в 6 IIS работает описанный вами в последней части метод редиректа на страницу с ошибками?
url mapping настроен, clean urls тоже настроены (aspnet_isapi.dll).
Продолжает выбрасывать Эксепшены, и обычная страница с ошибкой на 404.
MVC Framework: большое введение для начинающих