我是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; }
}
任何人都可以帮助我吗?
答案 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;
}
显然可以根据您的需要进行定制,但这应该适合您。