2016-08-02 5 views
1

Ich habe diese Urls:definierte Strecke in mvc kehrt falschen Weg

http://localhost:7708/Product/Search/89737497 
http://localhost:7708/Product/Search 

für das ich Route Attribut in Aktion und Controller-Set wie folgt:

[RoutePrefix("Product")] 
public partial class ProductController : BaseController 
{ 
    [Route("Search/{categoryCode}")] 
    public virtual async Task<ActionResult> Index(int? categoryCode) 
    { 
    } 
} 

aber ich Index Aktion senden nicht, senden an GetProductDetail(code) und returns:

Die Parameter Dictionary conta ns ein Null-Eintrag für den Parameter 'Code' der Nicht-NULL festlegbaren Typ 'System.Int32' für die Methode 'System.Web.Mvc.ActionResult GetProductDetail (Int32)'

und definiere ich diesen, in routeConfig Klasse, aber es funktioniert nicht:

  routes.MapRoute(
      name: "Search", 
      url: "Product/Search/{categoryCode}", 
      defaults: new { categoryCode = UrlParameter.Optional } 
     ); 

Ich eingegeben diese URL in der Adressleiste im Browser und es gibt diesen Fehler zurück.

Ich habe diese URL zu generieren:

<a href="@Url.Action(MVC.Product.Index(child.Code.ToUrlEncription()))">@child.Name </a> 

obige Code generiert diese url:

localhost:7708/Product?categoryCode=121212 

wie kann ich das tun?

+1

Wie rufen Sie die Indexaktion aus der Sicht auf? –

+0

Ich gebe URL in die Adressleiste ein. Ich habe dieses '@child.Name' –

+0

@Mir, das wir aktualisiert werden. –

Antwort

1

Wie für die Routen-Konfigurationsdatei sollten Sie Ihre Standardaktion + Controller für diese Route erklären:

routes.MapRoute(
      name: "Search", 
      url: "Product/Search/{categoryCode}", 
      defaults: controller = "Product", action = "Index", categoryCode = UrlParameter.Optional 
     ); 

Und für individuelle Routen sollten Sie Ihre Route Config hat den folgenden Code sicher:

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

    //This will map routes from Route attribute. 
    routes.MapMvcAttributeRoutes(); 

    // ... 
} 
Verwandte Themen