Asp.net-Mvc

在 Razor 語法中為 Telerik MVC Grid 定義模板列

  • November 8, 2014

我有以下我想模仿的遺留程式碼,所有操作連結在一列內。但是,我似乎無法正確使用 Razor 語法。我應該如何在 Razor 中表達這一點?

ASPX 列模板是這樣的:

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

我只能使用 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);

如何使用 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);

這是一個顯示綁定列和模板列的快速範例:

@<text></text>使用語法的範例 #1

@(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);
   })
)

使用 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);
   })
)

希望有所幫助,如果還沒有弄清楚的話。:)

更新- 在上面的程式碼範例中添加了隱式定義的“項目”參數。它展示瞭如何在 Telerik 控制項模板中獲取模型屬性。

UPDATE#2 - korchev 在他的程式碼範例中顯示了“@item.someProperty”語法。在我們的例子中不需要 @ 符號,因為我們在擴展方法中,但為了清楚起見,保留它並沒有什麼壞處。 更新#3 - 添加了範例 #2 程式碼範例

引用自:https://stackoverflow.com/questions/4463143