2016-08-08 29 views
0

Ich definiere meine Anwendung URLs wieURL Routing in MVC C#

domainname.com/storecontroller/storeaction/storename 

I wie

domainname.com/storecontroller/storename 

Eigentlich umschreiben will, muß ich storeaction aus der URL überspringen, ich will nicht um es mit Querystring mit "?" Gibt es da eh etwas zu tun, indem man den Router-Config-Pfad oder irgendeinen anderen Weg registriert?

+0

Sie diese verwenden möchten für alle co Kinderwagen oder ein bestimmter Controller? – Shyju

+0

Ich möchte es nur für 2 oder 3 Controller tun. –

+0

[RoutePrefix ("/ storecontroller/{Speichername}"]] Sie sollten in der Lage sein, ein Routenpräfix für bestimmte Controller hinzuzufügen –

Antwort

1

Ja. Sie können mit einer Regex Einschränkung nur für bestimmte Controller Aktion als Standardparameter und Spiel definieren:

routes.MapRoute("<route name>", "{controller}/{storename}", 
    new 
    { 
     action = "storeaction" 
    }, 
    new 
    { 
     controller = "somecontroller1|somecontroller2|somecontroller3", 
    }); 

(Aktion den Standardwert „storeaction“ immer)

Beachten Sie, dass Sie diese definieren müssen Route vor der Standard-generic Route, so dass es es nicht fangen, bevor diese in kickt.

+0

Sie antworten ist perfekt, aber für jeden Controller muss ich eine andere Route registrieren. Wie wäre es wenn ich 10 bis 20 Controller benötige? –

+1

@NomiAli Sie können Regex-Einschränkungen verwenden, um Übereinstimmungen mit bestimmten Controllern zu begrenzen, siehe meine bearbeitete Antwort. –

1

Attribute routing

[RoutePrefix("Home")] 
public ActionResult HomeController : Controller 
{ 
    [Route("{storeName}")] 
    public ActionResult ProcessStore(string storeName) 
    { 
    // to do : Return something 
    } 

    public ActionResult Index() 
    { 
    // to do : Return something 
    } 
} 
[RoutePrefix("Payment")] 
public ActionResult PaymentController : Controller 
{ 
    [Route("{storeName}")] 
    public ActionResult ProcessStore(string storeName) 
    { 
    // to do : Return something 
    } 
} 
+0

In 1.) wenn meine URL wie "anothercontroller/anotheraction" in diesem Fall ist, funktioniert es sicherlich nicht, da es bei dieser "anotheraction" -Methode in meinem "anothercontroller" bestehen sollte. In 2nd) es funktioniert nicht vielleicht braucht es etwas in routeconfig? –

+0

@NomiAli Wahr. Ich habe diesen Teil entfernt. Sedats Antwort wird darauf eingehen. Attribut-Routing-Version meiner Antwort wird weiterhin funktionieren. – Shyju