J'ai le Home Controller et mon nom d'action est Index. Dans Mon itinéraire, configurez les itinéraires comme ci-dessous.
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Maintenant, j'appelle ma page comme http://localhost:11045/Home/Index
est correct.
Si j'appelle ma page comme suit, elle devrait rediriger vers la page d'erreur.localhost:11045/Home/Index/98
oulocalhost:11045/Home/Index/?id=98
.
Comment gérer cela en utilisant un attribut de routage.
Mon action dans le contrôleur ressemble à celle ci-dessous.
public ActionResult Index()
{
return View();
}
Pour le routage d'attributs dans ASP.NET MVC 5
décorer votre contrôleur comme ça
[RoutePrefix("Home")]
public HomeController : Controller {
//GET Home/Index
[HttpGet]
[Route("Index")]
public ActionResult Index() {
return View();
}
}
Et l'activer dans la table de routage comme ceci
public class RouteConfig {
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//enable attribute routing
routes.MapMvcAttributeRoutes();
//convention-based routes
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = "" }
);
}
}
public class URLRedirectAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
string destinationUrl = "/VoicemailSettings/VoicemailSettings";
filterContext.Result = new JavaScriptResult()
{
Script = "window.location = '" + destinationUrl + "';"
};
}
}
Veuillez vérifier ici les informations relatives au routage: http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/asp-net-mvc-routing-overview-cs
Très probablement, le routage par défaut devrait être quelque chose comme ci-dessous:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
En outre, il semble qu'il manque un paramètre à la méthode d'action d'index, voir ci-dessous:
public ActionResult Index(string id)
{
return View();
}
Essayez de placer string id
dans votre méthode Index.
essayez de changer l'action d'index en ceci:
public ActionResult Index(int? id = null)
{
return View();
}
Cela devrait faire l'affaire. Donc, vous pouvez passer l’identifiant en tant que paramètre avec le "/ {valeur}" ou simplement utiliser "/? Id = {valeur}"