2009-04-17 5 views
0

Kennt jemand Probleme mit dem Rendern fehlerhafter Querystrings bei der Verwendung von htmlAttributes in einem Ajax.ActionLink? Es scheint, dass, wenn ich sogar ein leeres Array für die htmlAttributes einfüge, der Link falsch gerendert wird. Hier ist mein Code.Problem mit falsch wiedergegebenen Links von Ajax.ActionLink bei Verwendung von htmlAttributes

Wenn ich dies tun (man beachte die neue {}):

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

Der Link wie dies macht:

<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> 

Wenn ich dies tun (null anstelle von neuen {}):

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

Der Link macht wie folgt aus:

<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> 

Der einzige Unterschied zwischen den beiden ist das htmlAttributes-Argument am Ende von Ajax.ActionLink. Danke für jede Einsicht!

Antwort

2

Sie müssen die korrekte Überladung der Methode verwenden. Die eine, die Sie verwenden, nimmt ein IDictionary und deshalb wird es so gerendert, wie es ist.

Wenn Sie die Objektroutevalues ​​und Objekt Htmlattributes wie folgt aus:

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

es werden alle Arbeit!

+0

Super, das funktioniert! Vielen Dank! –