使用Razor语法为Telerik MVC Grid定义模板列

Pro*_*ofK 15 asp.net-mvc telerik telerik-mvc razor asp.net-mvc-3

我有以下遗留代码,我想模仿,一列内的所有动作链接.但是,我似乎无法正确使用Razor语法.我应该如何在剃刀中表达这一点?

ASPX列模板是这样的:

.Columns(column =>
{
    column.Template(o =>
        {%>
            <%= Html.ActionLink("Edit", "Edit", new{ id = o.DeviceID}) %> | 
            <%= Html.ActionLink("Delete", "Delete", new { id = o.DeviceID })%>
        <%});
Run Code Online (Sandbox Code Playgroud)

我只能使用Razor获得三个单独的列而不会抱怨语法等,如下所示:

.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);
Run Code Online (Sandbox Code Playgroud)

如何使用Razor语法定义包含所有三个操作链接的一个模板列?

编辑: 在下面尝试以下对Mike的答案的小改编,我得到错误"只有赋值,调用,递增,递减和新对象表达式可以用作语句":

columns.Template(o => @<text>@Html.ActionLink("Edit", "Edit", new { id = o.CampaignId }) | 
                        @Html.ActionLink("Delete", "Delete", new { id = o.CampaignId })
                        </text>).Width(100);
Run Code Online (Sandbox Code Playgroud)

mik*_*der 27

以下是显示绑定列和模板列的快速示例:

示例#1使用@<text></text>语法

@(Html.Telerik().Grid(Model)
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Bound(m => m.UserName);
        columns.Bound(m => m.Email);
        columns.Template(@<text> @Html.ActionLink("Edit", "Edit", new { id = item.UserId} ) | 
                                 @Html.ActionLink("Delete", "Delete", new { id = item.UserId)  
                         </text>).Width(100);
    })
 )
Run Code Online (Sandbox Code Playgroud)

使用Action委托的示例#2

@(Html.Telerik().Grid(Model)
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Bound(m => m.UserName);
        columns.Bound(m => m.Email);
        columns.Template(m => @Html.ActionLink("Edit", "Edit", new { id = m.UserId} ) + " | " +
                              @Html.ActionLink("Delete", "Delete", new { id = m.UserId)  
                         ).Width(100);
    })
 )
Run Code Online (Sandbox Code Playgroud)

希望有所帮助,如果还没有弄明白的话.:)

UPDATE - 在上面的代码示例中添加了隐式定义的"item"参数.它显示了如何在Telerik控件模板中获取Model属性.
更新#2 - korchev在他的代码示例中显示了"@ item.someProperty"语法.在我们的案例中不需要@符号,因为我们在扩展方法中,但为了清楚起见,不要伤害它. 更新#3 - 添加了样本#2代码示例

  • Agrh尝试了所有columns.Template(@ <text> @ Html.ActionLink("asd","Configure")</ text>); columns.Template(@ <文本> 1212312 </文本>); columns.Template(x => x.Url +"asdasdasd"); 但没有任何作用=(它只显示空字段 (2认同)