Что ж, на самом деле самый простой способ - это сделать одну версию вашего сайта запрограммированной по стандартам вместо определения браузера: D - однако, в прямом ответе, чтобы выполнить то же самое в ASP.NET MVC, используя: *
RedirectToAction("ViewName", "ControllerName");
- хороший метод, однако я обнаружил, что он более практичен, если вы чувствуете, что должны программировать для различных стандартов браузеров, чтобы создать основной вид и альтернативный «мобильный» вид под представлениями контроллеров. Затем вместо того, чтобы писать специальный код на каждом контроллере, вместо этого расширяйте контроллер следующим образом.
public class ControllerExtended : Controller
{
private bool IsMobile = false;
private void DetectMobileDevices(){ .... }
}
Затем измените классы вашего контроллера, чтобы вместо этого сказать классы ControllerExtended, и просто добавьте одну строку в начало каждого действия, для которого у вас есть альтернативные представления, например:
public class ApplicationsController : ControllerExtended
{
// GET: /Applications/Index
public ActionResult Index() {
this.DetectMobileDevices();
if(this.IsMobile){
return RedirectToAction("MobileIndex");
} else {
// actual action code goes here
return View();
}
}
}
В качестве альтернативы вы можете использовать return View ("ViewName"); но по моему опыту вы хотите на самом деле выполнять другие действия, а не просто показывать результат в другом представлении, как в случае представления таблицы HTML, а не таблицы Flex, чтобы помочь пользователям iPhone, поскольку в iPhone нет поддержки флэш-памяти и т. д. (на момент написания статьи)