Szenario: Ich habe einen Formularbereich in meiner ASP.NET MVC 5-Site.Attribut-Routing funktioniert nicht in Bereichen
Ich versuche, auf die Details Action umzuleiten, die eine benutzerdefinierte Route verwendet, die mit der neuen Attribut-Routing-Funktion definiert wurde.
Die RedirectToAction:
return RedirectToAction("Details", new { slug });
Die Aktion ich bin Umleitung:
[HttpGet]
[Route("forms/{slug}")]
public ActionResult Details(string slug)
{
var form = FormRepository.Get(slug);
...
return View(model);
}
Ich würde eine Umleitung zu http://localhost/forms/my-slug
erwarten, sondern die App mich http://localhost/Forms/Details?slug=my-slug
wird umgeleitet wird.
Dies bedeutet, dass das Attribut Routing nicht funktioniert.
Wie kann das gelöst werden?
Ich habe die routes.MapMvcAttributeRoutes() hinzugefügt; Linie meiner RouteConfig:
public class 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 }
);
}
}
Und hier ist mein Application_Start():
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
SWEET! Nachdem ich fast 4 Stunden damit verbracht habe, diese blöde Veränderung in MVC 5.1 herauszufinden, löst Ihre Lösung mein Problem ein für allemal. – Korayem
Ich bin froh, dass meine Frage + Antwort so vielen Menschen im Laufe der Zeit geholfen hat :-) –
Dies funktionierte für mich .. Ich hatte Area Route Attribute aufgegeben, weil es einfach nicht funktionieren würde. Aber nachdem ich AreaRegistration.RegisterAllAreas() nach routes.MapMvcAttributeRoutes() verschoben habe, hat es auf magische Weise den Trick geschafft! –