вторник, 30 ноября 2010 г.

Одна из определяющих характеристик MVC

ИСТОЧНИК: "Professional ASP.NET MVC 1.0 By Rob Conery, Scott Hanselman, Phil Haack, Scott Guthrie"

Одной из определяющих характеристик шаблона MVC является строгое "разделение понятий". Модели (Models), Контроллеры (Controllers) и Представления (Views) имеют
четко определеные роли и обязанности, и они общаются между собой  по четко определенным правилам. Это улучшает тестируемость и повторное использование кода.
Когда клас контроллера решает вернуть НТML ответ обратно клиенту, он отвечает за точную передачу в шаблон представления всех данных необходимых для отображения этого ответа.
Шаблон представления (View template) никогда не должен выполнять каких либо  действий связанных с извлечением данных или с бизнес логикой.  Вместо этого Шаблон представления должен использоваться ТОЛЬКО для  отображения данных полученных от Контроллера.

пятница, 26 ноября 2010 г.

HTML helper methods - like Html.TextBox() - check the ModelState collection when rendering output. If
an error for the item exists, they render the user-entered value and a CSS error class.

вторник, 16 ноября 2010 г.

Автоматическое обновление Web-приложенния установленного на TabletPC (другой компьютер) через интернет.

Исходные данные.
Система, представляющая собой некое онлайн приложение. Система позволяет работать пользователю онлайн. Также присутствует некое приложение которое устанавливается на переносные ПК ( Tablet PC). Это приложение позволяет пользователю получать определенные данные от основной онлайн ситемы, обрабатывать их оффлайн (добавлять , модифицировать и тд. ) и возвращать эти данные в основную систему. Проще говоря - проводить онлайн сихронизацию.

Задача.
Так как основная система (как и ее база) подверженны изменениям, то при наступлении этих самых изменений необходимо автоматически обновлять приложения установленные на переносных ПК, для достижения целостности данных и прочая и прочая.

Продолжение следует...

понедельник, 8 ноября 2010 г.

Как определить версию запущенного ( исполняемого ) приложения ( модуля )

'Получаем версию текущей исполняемой сборки
Dim sVer As String = System.Reflection.Assembly.GetExecutingAssembly.GetName().Version.ToString()
Dim realVersion As Version
Try
      realVersion = New Version(sVer)
Catch ex As Exception
      'если формат стоки для версии неправильный,будем считать что это нулевая версия      realVersion = New Version(0, 0, 0)
End Try
'главное значение версии (первая цифра)
Dim MajorVersion As String = realVersion.Major.ToString
'второстепенное значение версии (вторая цифра)
Dim MinorVersion As String = realVersion.Minor.ToString

четверг, 4 ноября 2010 г.

Рекомендации по именованию отдельных шаблонов представления

ИСТОЧНИК: "Professional ASP.NET MVC 1.0 By Rob Conery, Scott Hanselman, Phil Haack, Scott Guthrie"

Когда дело доходит до именования отдельных шаблонов представления рекомендуется давать шаблону тоже имя, что и метод действия, который был  вызван для визуализации. Например,   метод "Index" использует  представление  "Index" для отображения результата, и "Details" использует  представление "Details". Это   позволяет разработчику  легко определить, какой шаблон  представления связан с  методом действия.

Разработчикам нет необходимости точно указывать имя представления когда имя представдения совпадает с именем метода действия. Вместо этого мы можем использовать вспомогательный метод View() и передать в него в качестве параметра данные которые нам надо отобразить(без явного указания имени шаблона предсаления). И ASP.NET MVC автоматически определит что мы хотим использовать представление
\Views\[ControllerName]\[ActionName] для отображения результатов.

Было:
public ActionResult Index() {
var dinners = dinnerRepository.FindUpcomingDinners().ToList();
return View("Index", dinners);
}
Стало:
public ActionResult Index() {
var dinners = dinnerRepository.FindUpcomingDinners().ToList();
return View(dinners);
}

вторник, 2 ноября 2010 г.

Понимание маршрутизации для ASP.NET MVC

ИСТОЧНИК: "Professional ASP.NET MVC 1.0 By Rob Conery, Scott Hanselman, Phil Haack, Scott Guthrie"

Понимание маршрутизации для ASP.NET MVC

ASP.NET MVC содержит мощный механизм  роутинга URL,  позволяющий очень гибко  контролировать то, как URL работает  с классами контроллеров.  Это позволяет нам полностью настроить то ,  как ASP.NET MVC  выбирает класс контроллера ,какой метод вызывает, а также настроить различные способы с помощью которых переменные будут автоматически извлекаться из URL  и передаваться в методы в качестве параметров. Этот механизм  дает нам ту гибкость, которая позволит полностью оптимизировать сайт для Поисковой Отимизации , а также показывать любу стуктуру URL  какую мы хотим для приложения.

По умолчанию, новые проекты ASP.NET MVC  содержат в себе предустановленные настройки для URL роутинга. Этопозволяет легко начать работу с приложением без необходимости что либо настраивать.  Настройки правил для “URL маршрутизации по умолчанию”  можно найти в  файле Global.asax вашего ASP.NET MVC  приложения в классе “ Application ”. По умолчанию, правила маршрутизации для ASP.NET MVC  регистрируются в  методе “RegisterRoutes” этого класса.
“routes.MapRoute()” – регистрирует правило маршрутизации по умолчанию,  которое выстраивает соответствие входящего  URL  и классов котроллера, используя следующий формат URL : "/{controller}/{action}/{id}” – где “controller” это имя класса контроллера , экземпляр которого будет использоваться, “action” – это имя паблик метода который будет вызван, “id” – необязательный параметр, который может быть использован для переlачи парметра в метод из URL.  Третий параметр который подается в “MapRoute()” – это усановка набора  значений по умолчанию который используется для значения controller/action/id  в случае если они не присутствуют в URL  (Controller = “Home”,Action=”Index”, Id=””). Тоесть если мы ничего не введем в URL – эти значения будут подставленны автоматически.

Ниже приводится таблица, которая демонстрирует, как выстраиваются соответсвия между различными URL  и классами контроллера с их методаими, согдасно правилу маршрутизации “/{controllers}/{action}/{id}”.

Последние три строки показывают значения по умолчанию
 (Controller = Home, Action = Index, Id = ""). Так как метод “Index” зарегистрирован как имя действия по умолчанию, если таковое не указано, “/Dinners” и “/Home”  в URL   будут вызывать метод  Index() для соответствующих котроллеров. Так как контроллер “Home” зарегистрирован как контроллер по умолчанию , “/” в URL  будет создавать экземпляр класса HomeController и вызывать его метод  Index(). Если вам не нравятся правила маршрутизации по умолчанию – вы легко можете настроить их по своему усмотрению .