Это очень сильно зависит от конкретного сайта и того, что побудило вас подумать о наличии мобильной версии сайта. Какой объем контента у вас не подходит для мобильных браузеров (например, Flash, AJAX)? Насколько сложны упомянутые вами пользовательские элементы управления?
Лично я считаю, что лучше всего постараться, чтобы ваш основной сайт был совместимым с людьми, просматривающими более свежие смартфоны (например, iphone, Android), поскольку они становятся очень популярными и все более функциональными. Эти телефоны имеют браузеры, которые обычно основаны на WebKit, поэтому тестирование в Chrome или Safari даст хотя бы некоторое представление о том, насколько хорошо будет работать ваша страница.
При необходимости вы можете использовать несколько разные таблицы стилей для настольных и мобильных устройств. Вы делаете страницу более доступной, скрывая неважное содержимое и упрощая навигацию.
ASP .NET на самом деле имеет сложную встроенную систему фильтрации устройств, так что вы можете изменять части страницы, даже основную страницу, в зависимости от текущего браузера. Смотрите здесь: http://ryanfarley.com/blog/archive/2008/08/14/more-on-device-filtering-with-asp.net-server-control-properties.aspx. Вам просто нужно убедиться, что определения вашего браузера актуальны.
Избегайте сложных элементов управления ASP .NET, таких как GridViews, поскольку у вас меньше контроля над HTML и CSS. Элементы управления, такие как ListView, гораздо более гибкие.
Некоторые функции, такие как AJAX, могут быть с ошибками на некоторых устройствах, особенно если вы используете AJAX UpdatePanels. Вы можете использовать эмулятор для тестирования этих сценариев. В качестве альтернативы вы можете отключить эти функции на мобильных устройствах. Это предполагает, что вы даже используете их.
Для размещения бюджетных устройств у вас может быть отдельный мобильный сайт, который работает параллельно. Для создания мобильных страниц вы наследуете System.Web.UI.MobileControls.MobilePage вместо обычного класса Page. В W3Schools есть некоторая полезная информация: http://www.w3schools.com/dotnetmobile/control_mobilepage.asp. Обратите внимание, что мобильные веб-формы теперь устарели, хотя и не рассматриваются как дальнейшие действия.
Если вы собираетесь запускать два или более сайтов параллельно и у вас есть сложная логика, необходимая обоим, тогда вы можете создать библиотеку классов для хранения общих функций. Это исключило бы дублирование кода.
Чтобы избежать бесконечного цикла при перенаправлении на мобильную версию, просто проверьте текущий URL, чтобы увидеть, содержит ли он базовый URL для мобильного сайта. Возможно, было бы проще всего выполнить перенаправление на главной странице, но при каждой ссылке на каждую страницу была бы ссылка на мобильную версию.
В целом, это очень сложный предмет, поэтому, возможно, стоит подумать о том, чтобы найти подходящую книгу.