可以使用ClientRowTemplate()Kendo UI Grid而不构建String?

时间:2013-01-22 06:11:59

标签: asp.net-mvc-4 kendo-ui

在Kendo UI Grid中使用ClientRowTemplate的example使用了令人讨厌的HTML字符串

.ClientRowTemplate(
    "<tr><td colspan=\"6\">" +
        "<div class=\"customer-details\">" +
            "<img src=\"" + @Url.Content("~/Content/web/Customers/") + "#=CustomerID#.jpg\"" +
                "alt=\"#=ContactName#\" />" +
            "<h3 class=\"k-widget\">#=ContactName#</h3>" + 
            "<dl>" +
               "<dt>Name:</dt><dd>#=ContactName#</dd>" +
               "<dt>Company:</dt><dd>#=CompanyName#</dd>" + 
               "<dt>Country:</dt><dd>#=Country#</dd>" +
            "</dl>" +
            "<dl >" +
                "<dt>Address:</dt><dd>#=Address#</dd>" +
                "<dt>Phone:</dt><dd>#=Phone#</dd>" +
            "</dl>" +
        "</div>" +
    "</td></tr>"        
)

我目前正在使用部分视图.ClientRowTemplate(Html.Partial("_ClientRowTemplate").ToHtmlString()),但将它放在同一个视图文件中会很不错。

是否有一种内置方式可以使用像<script id="rowTemplate" type="text/x-kendo-tmpl">块更好的东西?我仍然想使用Kendo MVC助手而不是JavaScript。

1 个答案:

答案 0 :(得分:2)

查看Haacks关于模板化剃刀代表的博客。 http://haacked.com/archive/2011/02/27/templated-razor-delegates.aspx/

基本上你可以定义一个将呈现为HTML

的剃刀

定义你的剃刀代表

@{
Func<dynamic, object> tableRow = @<tr></tr>;
}

然后这样做

.ClientRowTemplate( @tableRow(null).ToString() )