2014-09-11 2 views
1

У меня есть действие под названием «Деталь», которое вызывается настольным приложением ASP.NET MVC. Теперь я хочу вызвать другое действие с тем же именем «Деталь», но оно будет вызываться только мобильными устройствами, такими как iPhone и Android и т. Д.Вызов действия контроллера имен для мобильных устройств

Есть ли какой-либо атрибут, который я могу добавить в новое действие с тем же как старый, который будет вызываться только мобильными устройствами.

ответ

1

Вы можете использовать ActionMethodSelectorAttribute создать Подвижный только маршрут Искатель:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] 
public class RouteMobileActionAttribute : ActionMethodSelectorAttribute 
{ 
    public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo) 
    { 
     return controllerContext.HttpContext.Request.Browser.IsMobileDevice; 
    } 
} 

Затем применить его:

public ActionResult Detail(int id) 
{ 
    // .... 
} 

[ActionName("Detail")] 
[RouteMobileAction] 
public ActionResult MobileDetail(int id) 
{ 
    // .... 
} 

См MSDN

P.S Рассматривали ли вы с помощью DisplayModes вместо этого?

+0

Спасибо! В настоящее время я использую DisplayModes, но проблема в том, что если мобильное представление не существует, то структура не отступает на представлениях рабочего стола. Здесь https://stackoverflow.com/questions/25794403/how-to-fallback-to-desktop-view-when-the-mobile-view-does-not-exist –

Смежные вопросы