Проблема с Ajax.ActionLink, неправильно отображающая ссылки при использовании htmlAttributes - PullRequest
0 голосов
/ 17 апреля 2009

Кто-нибудь знает какие-либо проблемы с отображением неверных строк запросов при использовании htmlAttributes в Ajax.ActionLink? Кажется, что если я добавлю даже пустой массив для htmlAttributes, ссылка будет отображаться неправильно. Вот мой код.

Когда я делаю это (обратите внимание на новый {}):

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

Ссылка выглядит так:

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

Когда я делаю это (ноль вместо нового {}):

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

Ссылка выглядит так:

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

Единственное различие между ними заключается в аргументе htmlAttributes в конце Ajax.ActionLink. Спасибо за понимание!

1 Ответ

2 голосов
/ 17 апреля 2009

Вам необходимо использовать правильную перегрузку метода. Тот, который вы используете, принимает IDictionary, и поэтому он отображает так, как он есть.

Если вы выберете объект RouteValues ​​и объект htmlAttributes следующим образом:

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

все будет работать!

...