如何仅使用Razor在MVC的网格/列中添加链接操作

时间:2016-12-27 07:53:00

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我正在使用Razor网格系统来显示列表。我想将列作为链接​​操作。但我的问题是它将字体结尾的链接显示为原始HTML文件。 我的代码是

columns.Add(c => c.Title).Titled("Title").Filterable(true).RenderValueAs(c => Html.ActionLink(c.Title, "Details", new { id = c.Id }));

因此产出是 Output

我还在Format()的位置使用RenderValueAs()但结果是一样的。 我已经通过这个链接进行了研究。Link1Link1Link1Link1但是找不到可能的解决方案。 如果没有javascript或任何脚本语言的帮助,我不想解决这个问题。我正在寻找只有剃刀相关的解决方案。谢谢。

2 个答案:

答案 0 :(得分:1)

从未使用过这个grid的东西,只需编写html标签并自行循环,我认为它更有控制力。

在这种情况下,我认为它的RenderValueAs方法问题,它可能是解码输出 您可以尝试此RenderValueAs(c => {string tag = generate your link tag string; return Html.Raw(tag);})

如果它不起作用,你可以在Filterable()上编写一个扩展方法,自己生成MvcHtmlString,它应该有效。

答案 1 :(得分:0)

可能我得到了一个我自己的问题的解决方案,我已经检查了它。

而不是使用  columns.Add(c => c.Title).Titled("Title").Filterable(true).RenderValueAs(c=>Html.ActionLink(c.Title, "Details", new { id = c.Id }));

我用过

@{
    var grid = new WebGrid(Model);
}
@grid.GetHtml(
        tableStyle: "webgrid-table",
        headerStyle: "webgrid-header",
        footerStyle: "webgrid-footer",
        alternatingRowStyle: "webgrid-alternating-row",
        selectedRowStyle: "webgrid-selected-row",
        rowStyle: "webgrid-row-style",
        mode: WebGridPagerModes.All,
        columns:
            grid.Columns(
            grid.Column(columnName: "Student Name", header: "Name", format: @<text>@item.Name</text>),
            grid.Column(columnName: "SchoolName", header: "School Name", format: @<text>@item.SchoolName</text> ),
            grid.Column(columnName: "Address", header: "Address", format: @<text>@item.Address</text>),
            grid.Column(columnName: "City", header: "City", format: @<a>@item.City</a>),
            grid.Column(columnName: "State", header: "State", format: @<text>@item.State</text>)
           ))

我在这里附上<a>城市。所以我很安静,能够自己定制整个网格。从参考link我获得了这个策略。