Проблема ActionLink с шаблоном клиента Teleerik MVC Grid
-
27-09-2019 - |
Вопрос
Я использую Telerik Grid для представления MemoS, полученных пользователем ниже, это код
<%Html.Telerik().Grid<UserManagement.Models.SentMemos>()
.Name("ReceivedMemos")
.Sortable(sorting => sorting
.OrderBy(sortOrder => sortOrder.Add(o => o.MemoDate).Descending()))
.DataBinding(dataBinding => dataBinding
//Ajax binding
.Ajax()
//The action method which will return JSON
.Select("_AjaxBindingReceivedMemos", "OA" )
).
Columns(colums =>
{
colums.Bound(o => o.MemoID).ClientTemplate(Html.ActionLink("Reply", "ReplyMemo", "OA", new { MemoID = "<#=MemoID#>"}, null).ToString()).Title("Reply").Filterable(false).Sortable(false);
colums.Bound(o => o.MemoID).ClientTemplate(Html.ActionLink("Acknowledge", "PreviewMemo", "OA", new { id = "<#=MemoID#>"}, null).ToString()).Title("Acknowledge").Filterable(false).Sortable(false);
colums.Bound(o => o.Subject).ClientTemplate(Html.ActionLink("<%#=Subject#>", "PreviewMemo", "OA", new { id = "<#=MemoID#>" }, null).ToString()).Title("Subject");
//colums.Bound(o => Html.ActionLink(o.Subject,"PreviewMemo","OA",new{id=o.MemoID},null).ToString()).Title("Subject");
colums.Bound(o => o.FromEmployeeName);
colums.Bound(o => o.MemoDate);
})
.Sortable()
.Filterable()
.RowAction((row) =>
{
row.HtmlAttributes.Add("style", "background:#321211;");
})
.Pageable(pager=>pager.PageSize(6))
.PrefixUrlParameters(false)
//.ClientEvents(events => events.OnRowDataBound("onRowDataBound"))
.Render();
%>
где я связываю третий столбец (тема), мое намерение состоит в том, чтобы сделать ActionLink, где субъект - это текст отображения, и я хочу, чтобы динамический идентификатор <#=MemoID#>
. Отказ MEMO ID работает нормально и дает мне связь с динамическими идентификаторами памятки. Проблема с предметом, т.е."<#=Subject#>"
) отображается как на экране без отображения на фактический предмет памятки. Я также пробовал ("<%#=Subject%>"
) Но без усиления. Любая помощь высоко ценится
С уважением
Решение
Бит поздно сейчас, может быть, для вас, но, возможно, это поможет другим:
Я делаю это через шаблоны следующим образом:
columns.Bound(c => c.ID).ClientTemplate(
Html.ActionLink("<#= SomeTextValue #>", "SomeAction", "SomeController", new { ID = "<#= ID #>" }, null).ToString()
).Title("");
Другие советы
Я понимаю, что это довольно поздно, но у меня была очень похожая проблема, которую я наконец выяснил, и эта ссылка возникла во время результатов поиска.
Я пытался добавить Ajax.actionLink. на шаблон клиента для MVC Grid. Наконец нашел проблему для стебля от UpdateTarGetId = «MyElement».Ajax.actionLink. генерирует необоснованный «#» для цели обновления.
Моя работа вокруг была:
columns.Bound(p => p.ID).Title("myTitle")
.ClientTemplate(Ajax.ActionLink("View", "myAction", "myController", new { myParam = "#=ID#" }, new AjaxOptions() { OnSuccess = "myJSFunction" }).ToHtmlString());
Затем:
function myJSFunction(response) {
$("#updateTargetElement").html(response);
}