如何在asp.net mvc中的Kendu UI Grid中添加锚链接列

时间:2014-07-30 18:04:29

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

我是ASP.NET MVC Kendo UI的新手。我正在使用ASP.NET MVC 5.我想在Kendo UI网格中将Name列作为HTML链接。但是我得到的错误就像"最好的重载方法匹配' Kendo.Mvc.UI.Fluent.GridBoundColumnBuilder.ClientTemplate(string)'有一些无效的论点"。 以下是我的代码。

@(Html.Kendo().Grid<Music.DataAccess.Models.Genre>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(c => c.Name).ClientTemplate(Html.ActionLink(c => c.Name, "Browse", new { genre = c.Name }));                
        columns.Bound(c => c.Description).Width(190);            
    })
    .HtmlAttributes(new { style = "height: 380px;" })
    .Scrollable()
    .Groupable()
    .Sortable()
    .Pageable(pageable => pageable
        .Refresh(true)
        .PageSizes(true)
        .ButtonCount(5))
    .Filterable()
            .DataSource(dataSource => dataSource
                .Ajax()
                .Read(read => read.Action("Genres_Read", "Store"))
            )
)

这是我的类型模型

 public class Genre
{
    public int GenreId { get; set; }
    [DisplayName("Genre Name")]
    public string Name { get; set; }
    public string Description { get; set; }

    public List<Album> Albums { get; set; }
}

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

这将是这样的:

@(Html.Kendo().Grid<Music.DataAccess.Models.Genre>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(c => c.Name).ClientTemplate("<a href='" + Url.Action("Browse") + "/?#= Name #'>Edit</a>");
        columns.Bound(c => c.Description).Width(190);            
    })
    .HtmlAttributes(new { style = "height: 380px;" })
    .Scrollable()
    .Groupable()
    .Sortable()
    .Pageable(pageable => pageable
        .Refresh(true)
        .PageSizes(true)
        .ButtonCount(5))
    .Filterable()
            .DataSource(dataSource => dataSource
                .Ajax()
                .Read(read => read.Action("Genres_Read", "Store"))
            )
)

答案 1 :(得分:0)

列的客户端模板接受一堆javascript作为字符串或函数。

我个人更喜欢把事物的格式化方面拉成javascript函数,因为它更容易使用。

因此,对于您的示例,这样的事情应该有效:

网格列

columns.Bound(c => c.Name).ClientTemplate("#=getActionLink(data.Name)#")

Javascript功能

function getActionLink(data)
{
 var link = "@Url.Action("YourActionHere","YourControllerHere")" + "/" + data;
 var returntext = "<a href='" + link + "'>" + data + "</a>";

return returntext;
}

显然可以根据您的需要进行定制,但这应该适合您。