Проблема с Ajax.ActionLink неправильно отображает ссылки при использовании htmlAttributes
-
11-09-2019 - |
Вопрос
Кто-нибудь знает о каких-либо проблемах с отображением неправильных строк запросов при использовании htmlAttributes в Ajax?Ссылка на действие?Кажется, что если я добавлю даже пустой массив для 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&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&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>
Когда я делаю это (null вместо new { }):
<%= 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.Спасибо за любую информацию!
Решение
Вам нужно использовать правильную перегрузку метода.Тот, который вы используете, использует IDictionary, и именно поэтому он отображается таким, какой он есть.
Если вы выберете object routeValues и object htmlAttributes следующим образом:
<%= Ajax.ActionLink("Delete", "Delete", "Milestone", new { id = Model.Id },
new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "ModalDeleteContainer",
OnSuccess = "modalDelete" }, new { })%>
все это сработает!