Pull to refresh
5
0
Leonid Shirmanov @shirmanov

User

Send message

ASP.NET MVC 4 Mobile Features устарели быстрее чем появились

Reading time5 min
Views8.7K

Что такое Mobile Features в ASP.NET MVC 4


ASP.NET MVC 4 вышел с очень ожидаемой и долгожданной новой возможностью — то, что по английски называют Mobile Features — поддержкой мобильных устройств. По большому счету, название сразу удивило, так как немного расходится с техническим описанием нововведения. Но промоушен — есть промоушен. Все упоминания про шаблоны страниц (layout) с поддержкой HTML 5, указание viewport, CSS media — все это к MVC фреймворку непосредственно отношения не имеет.

К новой возможности самого фреймворка можно отнести только два пункта:
  • создание View и шаблонов специфичных для мобильных браузеров
  • возможность на лету изменять то, какое View будет рендерится пользователю — а именно переключаться в рантайме между различными View

И здесь сразу стоит заметить, что слово «мобильный» упоминается исключительно в рекламных целях. MVC 4 позволяет создавать несколько View для каждой из требуемых страниц и определять для какого браузера каждая из них должна показываться. То есть, возможности ни коем образом не ограничиваются именно мобильными браузерами.

Все гениальное просто — «hook» во ViewEngine


Реализация данной возможности очень проста. Это просто «hook» во ViewEngine.

Вы делаете разные страницы (Views) для разных устройств или браузеров. Именуете файлы добавляя ключевое слово:
  • Catalog.cshtml
  • Catalog.iPhone.cshtml

Задаете критерий по которому будет выбираться нужная View — пользуясь DisplayModeProvider задаете нужные DefaultDisplayMode с нужным именем.

DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("iPhone")
{
    ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
         ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});

В рантайме, когда отработает метод контроллера, подготовленный ViewResult передается во View Engine, проверяются условия DisplayModeProvider-a, он изменяет имя файла View, которое нужно загрузить.

Можем ли мы этим реально пользоваться?

Читать дальше →
Total votes 17: ↑11 and ↓6+5
Comments18

Сериализация .NET объекта в JavaScript variable на HTML странице внутрь Script-блока

Reading time3 min
Views7.7K

Старые добрые hidden inputs


Часто приходится передавать в HTML страницу данные, которые необходимо потом использовать из JavaScript. Издавна для этого используется самый простой способ: hidden inputs. То есть, если нам нужно передать Uri адрес веб сервиса, мы на странице рендерим что-то вроде

  <input type="hidden" name="webServiceUri" value="URI we need"/>

и можем при помощи jQuery или plain old JavaScript найти этот input по имени и прочитать переданное значение.

Но когда нужно передавать много параметров или даже массивы, то этот способ становится не удобным. Можно конечно сделать REST сервис, который отдает все данные по AJAX-запросу со страницы (сессионные данные), но в большенстве случаев это излишне.

В настоящее время часто используется другой способ — на стороне сервера отрендерить в HTML все необходимые данные в виде JavaScript переменной внутри Script-блока.

Рассмотрим как это сделать в ASP.NET MVC.

Читать дальше →
Total votes 17: ↑9 and ↓8+1
Comments11

Валидация форм с почтовыми адресами — не забывайте про Гонконг

Reading time2 min
Views14K

Web не имеет государственных границ.


В наше время уже почти все веб-сайты имеют формы для ввода почтовых адресов. Почтовые адреса полностью или частично требуются для самых различных целей. И все сложности работы с адресами в web-е исходят от необходимости обеспечить правильную работу с пользователями из всех стран мира.

Самый простой пример — это отправка почтой товара или письма. Также адрес трубуется еще до отправки товара — для расчета стоимости упаковки и почтовой пересылки (packaging and shipping costs). Частично же адрес необходим для правильного расчета налогов при покупке товара — а именно процент VAT в США зависит от штата.

То есть, даже когда пользователь оплачивает товар или услугу Вы должны знать из какой он страны и, если это USA, то знать из какого он штата. Это принято делать довольно просто: если ты из USA — укажи свой ZIP/Postal Code.

Естественно все разработчики стараются свести форму ввода почтового адреса к унифицированному виду. Проще спросить у пользователя чуть больше, чем реально нужно, чем делать различные формы или скрывать/показывать элементы формы в зависимости от ситуации.

Но у такого подхода есть распространенные побочные эффекты.
Читать дальше →
Total votes 20: ↑13 and ↓7+6
Comments21

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity