为移动设备调用相同名称控制器操作

时间:2014-09-11 20:57:26

标签: asp.net-mvc

我有一个名为"详细信息"这是由ASP.NET MVC桌面应用程序调用的。现在,我想调用一个具有相同名称的不同动作"细节"但它只会被iPhone和Android等移动设备调用。

是否有任何属性可以放在新的Detail操作上,其参数与旧的只有移动设备调用的参数相同。

1 个答案:

答案 0 :(得分: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