Asp.net-Mvc
在 Razor 語法中為 Telerik MVC Grid 定義模板列
我有以下我想模仿的遺留程式碼,所有操作連結在一列內。但是,我似乎無法正確使用 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 程式碼範例