2016-05-02 6 views
0

Ich habe meine Home-Controller eingerichtet, so dass in Abhängigkeit von den Parametern, die es empfängt, verschiedene Funktionen gehen.
Problem ist in meinem Heim-Controller, es behandelt "Gametwo" als Abfrage für meine Route auf meinem Heim-Controller.Der Umgang mit mehreren benutzerdefinierten Routen in MVC

Beispiel
mysite.com/serchsomething < - Dies sucht die angegebene Zeichenfolge
mysite.com/gametwo < - Dieses auch sucht statt Controller

gametwo gehen Ich habe normale routeconfig.cs Datei, mit nur hinzugefügten attributeroutes.

Wie können Routen mit mehreren Parametern am besten behandelt werden? Damit sie nicht ambivalent sind oder mit anderen Routen abstürzen? Dank

Heimsteuerung

public ActionResult Index() 
    { 
     ... 
    } 

    [HttpGet] 
    [Route("{Query}")] 
    public ActionResult Index(string Query) 
    { 
     ... 
    } 

    [HttpGet] 
    [Route("{Query}/{Version}")] 
    public ActionResult Index(string Query, int Version) 
    { 
     ... 
    } 

GameTwo Controller

[Route("GameTwo")] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

routeconfig

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapMvcAttributeRoutes(); 

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

Sie haben Ihre Routen etwas zu geben, sie einzigartig zu definieren und zu machen, z.B. '[Route (" Suche/{Abfrage} "]] –

Antwort

0

Try this oben

Home Controller

[HttpGet]   
     public ActionResult serchsomething(string Query) 
     { 
//do something 
     } 

Spiel zwei Controller-

 public ActionResult Index() 
    { 
     return View(); 
    } 

Routing

public class RouteConfig 
     { 
      public static void RegisterRoutes(RouteCollection routes) 
      { 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     /*serchsomething action*/ 
       routes.MapRoute(
        name: "Your route name 1", 
        url: "serchsomething/{Query}", 
        defaults: new 
        { 
         controller = "home", 
         action = "serchsomething" 
        } 
       ); 

       /*GameTwo Controller*/ 
       routes.MapRoute(
        name: "Your route name 2", 
        url: "GameTwo", 
        defaults: new 
        { 
         controller = "GameTwo", 
         action = "Index" 
        } 
       ); 
    /* default*/ 
      routes.MapRoute(
        name: "Default", 
        url: "{controller}/{action}/{id}", 
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 

    }} 
0

Ar Geben Sie den richtigen Controller-Namen ?. Ich sehe nur Ihre URL als

mysite.com/gametwo 

but controller name as GameTwo Pls change it as GameTwo and try again. 
Verwandte Themen