我有一个名为"详细信息"这是由ASP.NET MVC桌面应用程序调用的。现在,我想调用一个具有相同名称的不同动作"细节"但它只会被iPhone和Android等移动设备调用。
是否有任何属性可以放在新的Detail操作上,其参数与旧的只有移动设备调用的参数相同。
答案 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?