2016-12-05 20 views
0

我需要在Kendo UI MVC網格的ClientTemplate內部使用razor函數內部使用綁定列值。像「AnyColumnValue」參數如下:將約束列值傳遞給MVC Kendo UI Grid的剃刀功能

.ClientTemplate(@KendoHtmlFuncs.RequestingDeleteWithConfirmationLink(itemNameL, AnyColumnValue)); 

全部例子如下:

@(Html.Kendo().Grid<DisplayOfGroupCompanyVm>() 
     .Name(itemNameL + "-definitions-grid") 
     .Columns(columns => 
     { 
     columns.Bound(c => c.Name); 
     columns.Bound(c => c.DateCreated).ClientTemplate("#= kendo.toString(DateCreated,'yyyy-MM-dd')#"); //.Width(150); 
     columns.Bound(c => c.IsActive); 
     columns.Bound(c => c.CreateStatus); 

     columns.Template(@<text></text>) 
        .Width(100) 
        .ClientTemplate(@KendoHtmlFuncs.GetModalForRequestingEditLink(itemNameL)); 
     columns.Template(@<text></text>) 
       .Width(100) 
       .ClientTemplate(@KendoHtmlFuncs.RequestingDeleteWithConfirmationLink(itemNameL, AnyColumnValue)); 
     }) 
+1

什麼是AnyColumnValue?綁定到網格的dataSource中的列的實際值?如果是這樣,你不能做你想做的事情,因爲KendoHtmlFuncs.RequestingDeleteWithConfirmationLink()是一個服務器端函數(在cshtml呈現期間在服務器上執行),但是AnyColumnValue在網格綁定到dataSource之前沒有值客戶端。看起來你必須使RequestingDeleteWithConfirmationLink()成爲客戶端函數......你不能*在ClientTemplate中執行*服務器代碼。 –

+0

@TheDreadPirateStephen謝謝,它是正確的。除此之外,是否有解決方法將列值用作剃刀功能的參數? – serefbilge

+0

我不這麼認爲,因爲列的值不存在於服務器上(執行剃鬚刀功能的地方)。您*可以*使用ClientTemplate中的實際列值,因爲在呈現該行時ClientTemplate在客戶端上執行,您不能調用Razor函數,因爲它已在服務器上執行以生成HTML然後將視圖返回給客戶端。請參閱http://docs.telerik.com/aspnet-mvc/helpers/grid/configuration#clienttemplate或提供函數的實現和您傳遞的列,然後我將嘗試寫出答案。 –

回答

0

在一些挖掘的@TheDreadPirateStephen的意見後結束,(感謝他)我改變了我的方式的解決方法, 。他評論的主要觀點是'你不能在ClientTemplate中執行服務器代碼'。然後,下面的解決方法對我來說是可行的。

.ClientTemplate(@KendoHtmlFuncs.RequestingDeleteWithConfirmationLink(itemNameL)); 

我放棄使用AnyColumnValue HTML剃刀函數內(從綁定到網格則dataSource一列的實際值)。相反,我用剃刀功能在返回的腳本中使用它。在下面看到的剃刀功能中,HasPermissionForRequestingDelete變量對應於AnyColumnValue並且它屬於綁定到網格的模型。

public static string RequestingDeleteWithConfirmationLink(string itemNameL) 
    { 
     string linkFormat = @"<a {0} class='k-button'> 
             <i class='fa fa-trash-o'></i> Request For Delete 
           </a>"; 

     string conditionalPart = @"#if(HasPermissionForRequestingDelete){# 
             onclick='" + itemNameL + @"_DefinitionsFunc.requestingDelete(this, #= Id #)' 
            #}else{# 
             disabled='disabled' 
            #}#"; 

     return string.Format(linkFormat, conditionalPart); 
    }