基于Web浏览器/设备的ASP.NET MVC路由(例如iPhone)

Ale*_*lex 7 c# asp.net asp.net-mvc asp.net-mvc-routing

从ASP.NET MVC中,是否可以基于访问设备/浏览器路由到不同的控制器或操作?

我正在考虑为我的网站的某些部分设置替代操作和视图,以防从iPhone访问它,以优化它的显示和功能.我不想为iPhone创建一个完全独立的项目,因为大多数网站在任何设备上都可以.

有关如何做到这一点的任何想法?

RPM*_*984 0

最好的选择是自定义操作过滤器。

你所要做的就是继承自ActionMethodSelectorAttribute并覆盖该类IsValidRequest

public class [IphoneRequest] : ActionMethodSelectorAttribute
    {
        public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
        {
             // return true/false if device is iphone
Run Code Online (Sandbox Code Playgroud)

然后在你的控制器中

[IphoneRequest]
public ActionResult Index()
Run Code Online (Sandbox Code Playgroud)