2016-08-01 3 views
0

Wir versuchen, zwei Ansichten für unsere MVC-App zu erstellen. Mobile und WebVerwalten von Routing für mobile und Webbrowser

Dies waren die beiden Links folgten wir

  1. Handling routing for both Desktop & Mobile Controllers in one instance of ASP.NET MVC
  2. Mixing ASP.NET MVC Display Mode Providers and Routing Rules

Erstellt Konto/Login.cshtml Seite und Account/Login.Mobile.cshtml Seite (mit unterschiedlichen Layouts). Erstellt eine Standardroute

routes.MapRoute(
    name: "DefaultMobile", 
    url: "mobile/{controller}/{action}/{id}", 
    defaults: new 
      { 
       mobile = true, 
       controller = "Home", 
       action = "Index", 
       id = UrlParameter.Optional 
      } 
); 

Aber das Problem ist, dass wir routes.MapMvcAttributeRoutes(); und zum Erzeugen von Urls wie \login verwenden. Gibt es eine Möglichkeit, mobile/login zum Abrufen der mobilen Ansicht zu erzwingen. etwas, das das Routing zwingt, mobile Ansicht anzuzeigen, wenn die URL mit "/ mobile /" beginnt?

Oder gibt es einen anderen Weg, es zu tun?

+0

wenn du gehst immer mobil in Ihrer URL verwenden, können Sie einfach erstellen ein Bereich namens mobile, der immer auf "http: // siteurl/mobile /" steht – JamieD77

Antwort

1

Sie sollten in der Lage sein 2 route Definitionen angeben, mit dem Attribut als auch das Routing, eine für normale Login und ein für mobile

[Route("{type}/Login")] 
[Route("Login")] 
public ActionResult Login(string type = "") 
{ 
    var isMobile = String.Equals(type,"mobile",StringComparison.OrdinalIgnoreCase); 

    // to do : Return something 
}