MVC 5 Routing-parameter mit @Url.RouteUrl
Habe ich eine ActionResult, ich habe ein routing-Attribut:
[Route("myproduct/{productID}", Name = "myproduct")]
[MvcSiteMapNode(Title = "Products", ParentKey = "products", Key = "myproducts")]
public ActionResult myproducts(int productID) ...
Ich versuche einen link zu den anzeigen über eine RouteUrl:
<a href="@Url.RouteUrl("myproducts", @Model.myproducts[i].productID)">Buy</a>
Den resultierenden html-Code nicht sogar a href:
<a>Buy</a>
Wenn ich entfernen Sie den parameter funktioniert es:
[Route("myproducts", Name = "myproducts")]
[MvcSiteMapNode(Title = "Products", ParentKey = "home", Key = "myproducts")]
public ActionResult myproducts(int productID) ...
<a href="/products/myproducts">Book</a>
Bin ich versucht hinzuzufügen, die parameter falsch? Die Dokumentation empfiehlt, was ich bin versucht.
Route Config:
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 }
);
}
Können Sie uns zeigen Sie Ihre route-Konfiguration? Ich vermute, es ist ein positionelles problem mit, wie Ihre Routen definiert sind. d.h. die default-route {controller}/{action}/{id} (optional) Diese Platzhalter-Namen sind nicht frei wählbare. Aber Sie haben {productId}, die vielleicht vermasselt Ihr routing, die ist, warum Sie nicht immer alles. Was passiert, wenn Sie mit der navigationssteuerung /products/myproducts/45 in Ihrem browser? Ich vermute, dass ein 404.
Ich habe die route-Konfiguration. Ich bin immer 404 auf jede Ableitung der url. Ich habe auch versucht, nur hart codieren der url, statt mit dem @ - Url-tag und jedes mal 404
Ich habe die route-Konfiguration. Ich bin immer 404 auf jede Ableitung der url. Ich habe auch versucht, nur hart codieren der url, statt mit dem @ - Url-tag und jedes mal 404
InformationsquelleAutor Scott | 2015-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen:
Und ändern Sie Ihre route wie action:
InformationsquelleAutor janhartmann
Kann ich sehen, ein paar Fragen:
Wird der parameter nicht richtig übergeben, so übergeben Sie das productId-direkt als zweiten parameter der
Url.RouteUrl
Methode. Sie sollte es passieren, korrekt (und vorsichtig sein, damit es mit den Namen der parameter in der route), zum Beispiel über eine anonyme Objekt:Den Namen der route in das Attribut und die name in der @Url-helper werden verschiedene (Siehe myproduct Vs myproducts):
InformationsquelleAutor Daniel J.G.