Mon objectif est d'avoir le routage de l'URL comme suit: Quel est le moyen le plus simple d'y parvenir sans placer le nom du contrôleur un nom de fonction dans l'URL ci-dessus? Si la page ci-dessus non trouvée, je devrais rediriger vers 404 page. P> Addon 1: Cette page Is-Peter et cette page IS-John n'est pas du contenu statique, mais provient de la base de données. p> p>
3 Réponses :
Personnellement, je ne suggérerais pas un itinéraire comme celui-là, mais si cela répond à vos besoins, vous devez faire quelque chose comme:
avoir la route suivante dans votre fichier global.asax: p> Ensuite, dans votre "PersonnelPagecontroller", avez la méthode suivante: p> Assurez-vous de disposer de la vue appropriée: "Peterview", "JohnView" et " Notfound "dans vos vues / packagePage / em>. P> p>
Vous pouvez combiner cela avec une contrainte d'itinéraire pour empêcher les demandes «indésirables» d'aller à ce contrôleur. (Je suppose que vous avez toujours besoin d'un autre contrôleur)
Comment empêcher la demande «indésirable»?
@ERVIN TER, vous pouvez fournir des contraintes de route qui contraindront cet itinéraire à une expression régulière particulière.
@Simucal, je vois. Je ne sais jamais que nous pouvons planter une expression régulière sur la route.
Je ne pense pas que cela puisse être fait. AFAIK ASP.NET MVC reconnaît les paramètres de routage via le caractère "/".
Votre format, d'autre part, passe par "{contrôleur} -is- {id} - {action}" - il n'y a donc aucune façon que le contrôleur puisse se distinguer de l'ID et de l'action. P >
Je pense que utiliser des caractères "/" n'affecte ni dégrade de référencement; Il n'affecte que la lisibilité humaine et la rétention de l'URL. P>
Quoi qu'il en soit, l'URL suivante est possible: http://www.abc.com/this-is-the-page-of/peter Code> En ajoutant un autre itinéraire dans la méthode GLOBAL.ASAX CODE> RegisterRoutes: P> routes.MapRoute(
"AnotherRoute",
"this-is-the-page-of/{id}",
new { controller = "PersonalPage", action = "Details", id = "" }
);
Semblable à la mise en œuvre de Kingnestor, vous pouvez également faire les suivants qui faciliteront votre travail:
1) Écrivez votre modèle P>
public ActionResult Index([ModelBinder(typeof(CustomBinder))] MyUser usr)
{
ViewData["Welcome"] = "Viewing " + usr.Username;
return View();
}
Merci à Zhaphe pour réorganiser les étapes 3 et 4
J'ai trouvé BindingContext ne contenant pas httpcontext
Est "cette-IS-PETER-Page" une page statique ou une dynamique où "cette-IS-PETER-Page" serait un champ dans une base de données?