Problem mit der falschen Darstellung von Links durch Ajax.ActionLink bei der Verwendung von htmlAttributes

StackOverflow https://stackoverflow.com/questions/761288

Frage

Kennt jemand Probleme mit der Darstellung falscher Abfragezeichenfolgen bei der Verwendung von htmlAttributes in einem Ajax.ActionLink?Es scheint, dass der Link falsch gerendert wird, wenn ich auch nur ein leeres Array für die htmlAttributes einfüge.Hier ist mein Code.

Wenn ich das mache (beachten Sie das neue { }):

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

Der Link wird wie folgt dargestellt:

<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 das mache (null statt new { }):

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

Der Link wird wie folgt dargestellt:

<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 Argument htmlAttributes am Ende von Ajax.ActionLink.Vielen Dank für jeden Einblick!

War es hilfreich?

Lösung

Sie müssen die richtige Überladung der Methode verwenden.Das von Ihnen verwendete verwendet ein IDictionary und wird daher so gerendert, wie es ist.

Wenn Sie das Objekt RouteValues ​​und das Objekt htmlAttributes wie folgt auswählen:

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

es wird alles funktionieren!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top