Имена файлов ничего не значат для классов, поэтому я не уверен, что вы думаете о идее "HomeController.Mobile.cs".У вас не может быть двух классов HomeController с одним и тем же именем, так что это либо отдельные контроллеры / области / приложения, либо общий, как вы заметили.
Если вы придерживаетесь соглашения по умолчанию и имеете один и тот же контроллер, выможет отключить вашу логику в зависимости от типа устройства:
if (HttpContext.GetOverriddenBrowser().IsMobileDevice)
{
//mobile specific logic
}
Если вы обнаружите, что многие контроллеры / действия имеют различную логику в зависимости от типа устройства, то я бы сказал, что у вас есть отдельные приложения и имеет смысл использовать область или даже отдельное веб-приложение, если необходимо, ИМХО.Я попытался бы решить, по какому пути я шел, основываясь на этом.
Правка для учета комментариев:
Я понимаю, что вы хотите;Мне пришлось сделать нечто подобное, когда я попытался сделать версию блога для jQuery Mobile.В принципе, есть 3 варианта, как я вижу:
- Контроллеры с единым набором логики, которая извлекает все данные для всех представлений.Каждое представление просто использует то, что ему нужно.
- Контроллеры с «if (isMobile)», который выполняет определенную логику и возвращает мобильное представление в случае мобильных устройств, а также выполняет другую логику и возвращает представление по умолчанию в других.
- Совершенно отдельная область или приложение для мобильных устройств (например, mobile.yourapp.com)
Похоже, вы не хотите № 2 или № 3, так что высчитается № 1?Узким местом в мобильных устройствах являются его ресурсы и сеть, поэтому я не буду слишком обеспокоен, если вашему серверу придется выполнять «дополнительную» работу, чтобы получить какой-то набор данных, который мобильное представление никогда не отображало.