ActionLink Problema con griglia client Template Telerik MVC
-
27-09-2019 - |
Domanda
sto usando griglia Telerik al presente memo ricevuti dall'utente sotto è il codice
<%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();
%>
dove sto legando terza colonna (Salvo) la mia intenzione è quella di fare un ActionLink cui soggetto è il testo di visualizzazione e voglio un ID dinamica proveniente da <#=MemoID#>
. memo id sta lavorando bene e mi dà un legame con gli ID Memo dinamici. il problema è con il soggetto cioè ("<#=Subject#>"
) è reso come lo è sullo schermo senza mappatura al tema attuale del memo. Inoltre ho provato ("<%#=Subject%>"
), ma per nessun guadagno. ogni aiuto è molto apprezzato
Saluti
Soluzione
Bit tardi forse per voi, ma forse questo aiuterà gli altri:
Lo faccio tramite modelli, come segue:
columns.Bound(c => c.ID).ClientTemplate(
Html.ActionLink("<#= SomeTextValue #>", "SomeAction", "SomeController", new { ID = "<#= ID #>" }, null).ToString()
).Title("");
Altri suggerimenti
Mi rendo conto che questo è abbastanza tardi, ma ho avuto un problema molto simile che ho finalmente capito e questo legame si avvicinò durante risultati di ricerca.
Stavo cercando di aggiungere un Ajax.Actionlink per un modello di client per la griglia MVC. Finalmente trovato il problema di arginare dal UpdateTargetID = "MyElement".
Ajax.ActionLink genera un escape "#" per il target di aggiornamento.
Il mio lavoro intorno era:
columns.Bound(p => p.ID).Title("myTitle")
.ClientTemplate(Ajax.ActionLink("View", "myAction", "myController", new { myParam = "#=ID#" }, new AjaxOptions() { OnSuccess = "myJSFunction" }).ToHtmlString());
Quindi:
function myJSFunction(response) {
$("#updateTargetElement").html(response);
}