Comme l'indique le titre, l'URL de l'un des nœuds du fil d'Ariane est incorrecte. Je viens d'obtenir un http://localhost/#URL du nœud MvcSiteMapProvider rendue/#
Évidemment, j'ai quelque chose de mal. J'ai d'autres structures similaires dans le sitemap qui fonctionnent. Pouvez-vous dire de ce qui manque?
Je peux poster plus d'informations si nécessaire.
SiteMap:
<mvcSiteMapNode title="ISP" controller="xxx" action="Index">
<mvcSiteMapNode title="PC" action="Details" preservedRouteParameters="pcId">
<mvcSiteMapNode title="SGD" controller="yyy" action="Details" preservedRouteParameters="pcId, yyyId, editable">
<mvcSiteMapNode title="ESGN" controller="yyy" action="Title" preservedRouteParameters="pcId, yyyId, editable" />
</mvcSiteMapNode>
Actions:
[HttpGet]
[Route("xxx/{pcId:int}/yyy/{yyyId:int}/Details/{editable:bool}")]
public virtual ActionResult Details(int pcId, int yyyId, bool editable)
{
[HttpGet]
[Route("xxx/{pcId:int}/yyy/{yyyId:int}/Title")]
public virtual ActionResult Title(int pcId, int yyyId)
{
Itinéraire Carte:
routes.MapRoute(
name: "xxx",
url: "xxx/{action}/{pcId}",
defaults: new
{
controller = "xxx",
action = "Index",
pcId = UrlParameter.Optional
}
);
Mise à jour: Lors du retrait du paramètre "modifiable" il a commencé à travailler. Pourrait-il y avoir un problème avec plus de 2 paramètres? ou éventuellement le type ou le nom du paramètre?
mise à jour suivant les conseils de débogage NightOwl88:
Le urlHelper fait générer l'URL correcte
Ceci est mon code du contrôleur:
[HttpGet]
[Route("TransactionDetails/File/{fileId:int}")]
public virtual ActionResult Index(int fileId)
{
{
var urlHelper = new UrlHelper(new System.Web.Routing.RequestContext(this.HttpContext, this.RouteData));
var url = urlHelper.Action("Index", "Transaction",
new System.Web.Routing.RouteValueDictionary { { "id", 678 } });
System.Diagnostics.Debug.WriteLine(url);
}
{
var urlHelper = new UrlHelper(new System.Web.Routing.RequestContext(this.HttpContext, this.RouteData));
var url = urlHelper.Action("Index", "File",
new System.Web.Routing.RouteValueDictionary {{"fileId", 123}});
System.Diagnostics.Debug.WriteLine(url);
}
Je reçois: /AdministratorConsole/TransactionDetails/678 et /AdministratorConsole/TransactionDetails/File/123
Donc l'assistant est capable de générer une URL pour moi mais MvcSiteMapProvider n'est toujours pas content.
SiteMap est:
<mvcSiteMapNode title="Transaction Log" controller="TransactionLog" action="Index">
<mvcSiteMapNode title="Transaction Details" controller="Transaction" action="Index" preservedRouteParameters="id">
<mvcSiteMapNode title="File Details" controller="File" action="Index" preservedRouteParameters="id, fileId"> <!--TODO link back to parent not working-->
Merci de faire un essai. Il est intéressant de noter que le nœud qui a le problème obtient une bonne Url quand c'est le dernier nœud de la liste, mais pas quand il est le second à durer. –
J'ai mis à jour ma question. UrlHelper génère une URL pour moi mais MvcSiteMapProvider ne l'est pas. Autre chose que je peux essayer? –