2009-04-17 6 views
0

Est-ce que quelqu'un connaît des problèmes de rendu de chaînes de requête incorrectes lors de l'utilisation de htmlAttributes dans un Ajax.ActionLink? Il semble que si je mets même un tableau vide pour le htmlAttributes, le lien est rendu incorrectement. Voici mon code.Problème lors de l'affichage incorrect des liens de rendu lors de l'utilisation de htmlAttributes

Quand je fais cela (notez le nouveau {}):

<%= Ajax.ActionLink("Delete", "Delete", "Milestone", new RouteValueDictionary { { "id", Model.Id } }, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "ModalDeleteContainer", OnSuccess = "modalDelete" }, new { })%> 

Le lien rend comme ceci:

<a href="/Client/1/Admin/Milestone/Delete?Count=1&amp;Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&amp;Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, httpMethod: 'GET', updateTargetId: 'ModalDeleteContainer', onSuccess: Function.createDelegate(this, modalDelete) });">Delete</a> 

Quand je fais (null au lieu de nouveau {}):

<%= Ajax.ActionLink("Delete", "Delete", "Milestone", new RouteValueDictionary { { "id", Model.Id } }, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "ModalDeleteContainer", OnSuccess = "modalDelete" }, null)%> 

Le lien rend comme ceci:

<a href="/Client/1/Admin/Milestone/Delete/703c749e-c145-4cf1-90eb-9bee00bac79d" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, httpMethod: 'GET', updateTargetId: 'ModalDeleteContainer', onSuccess: Function.createDelegate(this, modalDelete) });">Delete</a> 

La seule différence entre les deux est l'argument htmlAttributes à la fin de l'Ajax.ActionLink. Merci pour tout aperçu!

Répondre

2

Vous devez utiliser la surcharge correcte de la méthode. Celui que vous utilisez prend un IDictionary et c'est pourquoi il est rendu tel qu'il est.

Si vous choisissez les RouteValues ​​d'objets et htmlAttributes objet comme celui-ci:

<%= Ajax.ActionLink("Delete", "Delete", "Milestone", new { id = Model.Id }, 
new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "ModalDeleteContainer", 
OnSuccess = "modalDelete" }, new { })%> 

cela fonctionnera tout!

+0

Génial, ça marche! Merci! –

Questions connexes