Selon moi, l'appel ci-dessous génère l'URL se terminant par des tâches/Edit, mais je le veux générer l'url Tâches/Modifier/23de reliure et de routage ou un problème de génération url dans Asp.NET applications Mvc
<%= Html.ActionLink<TaskController>("Edit Task", (x) => x.Edit("23"))%>
dans Global.asax:
string taskController = NameResolver.NameOfController<TaskController>();
string editAction = NameResolver.NameOfAction<TaskController>(x => x.Edit(null));
routes.MapRoute(
"EditTasks",
"Tasks/Edit/{id}",
new { controller = taskController, action = editAction, id = string.Empty });
J'ai également un problème de liaison dans cette action. Les valeurs définies à partir de la vue ne sont pas liées à mon paramètre Edit. Il arrive à chaque fois null et je n'ai pas défini DefaultModelBinder n'importe où. Voici l'action d'édition:
public ActionResult Edit (string id)
{
//retrieve some data and pass it to view and return view
}
Alors, quel peut être le problème ici? Comment puis-je résoudre l'URL et le problème de liaison? Et oui, je suis un débutant Asp.Net Mvc :)
Merci beaucoup. Pour id chose, ce n'est pas réellement un nombre entier, pour la simplicité je l'ai changé de cette façon dans l'exemple de code. Une autre question: Puis-je utiliser un nom d'action fortement typé, c'est-à-dire pas "Modifier", est-ce que Mvc a une telle utilité? – rovsen
@arch stanton: Je ne vois pas comment vous pouvez utiliser un nom d'action fortement typé car Edit est une méthode qui n'est pas une classe sans avoir à se soucier sérieusement de l'analyse des expressions LINQ. Je vais donner un coup de pouce quand j'ai le temps, mais même si possible, il ne devrait jamais arriver à la production. Ce serait un mauvais hack qui n'est pas maintenable. –
J'ai entendu MvcContrib prend en charge ces utilisations fortement typées comme Html.ActionLink ("Modifier la tâche", (x) => x.Edit ("23")). Mais pas essayé moi-même. –
rovsen