I have the following legacy code that I would like to mimic, with all action links inside one column. However, I can't seem to get the Razor syntax right. How should I express this in Razor?
The ASPX column template is like this:
.Columns(column =>
{
column.Template(o =>
{%>
<%= Html.ActionLink("Edit", "Edit", new{ id = o.DeviceID}) %> |
<%= Html.ActionLink("Delete", "Delete", new { id = o.DeviceID })%>
<%});
I have only been able to get three separate columns using Razor without complaints about syntax etc. as below:
.Columns(columns =>
{
columns.Template(o => @Html.ActionLink("Edit", "Edit", new { id = o.ProductId })).Width(50);
columns.Template(o => @Html.ActionLink("Details", "Details", new { id = o.ProductId })).Width(50);
columns.Template(o => @Html.ActionLink("Delete", "Delete", new { id = o.ProductId })).Width(50);
How can I define one template column that contains all three action links using Razor syntax?
EDIT: In trying the following small adaptation of Mike's answer below, I get the error "Only assignment, call, increment, decrement, and new object expressions can be used as a statement":
columns.Template(o => @<text>@Html.ActionLink("Edit", "Edit", new { id = o.CampaignId }) |
@Html.ActionLink("Delete", "Delete", new { id = o.CampaignId })
</text>).Width(100);
Check ScottGu's blog posts with regard to Razor for what @item is.
Here is a quick sample showing both bound columns and a template column:
Sample #1 using
@<text></text>
syntaxSample #2 using an Action delegate
Hope that helps, if didn't already figure it out. :)
UPDATE - added the implicitly defined "item" parameter in code sample above. It shows how to get the Model properties within the Telerik control template.
UPDATE#2 - korchev showed the "@item.someProperty" syntax within his code sample. The @ symbol is not needed in our case since we are within an extension method, but doesn't hurt to leave it for clarity. UPDATE#3 - added Sample #2 code sample
If you are binding with ajax, the format has to look something more like this:
See here for more info: http://www.telerik.com/forums/kendo-mvc-grid-actionlink-column
This will generate something like action Link the id id = m.UserId you can show like DataKeys:
at the post method you will have :
I had a print button I needed to put in the Header row, that I chose to put in the same column as, but above where the Update button goes. I was able to do it just fine in Razor like this:
This is where "Print Grid" was for display on my linkbutton, "OutputAgencies" was a method in my controller, and "AdminController" was the name of my controller.