在ASP.NET MVC 3中使用WebGrid显示原始HTML

6

我有这样一个网格:

WebGrid grid = new WebGrid(source: Model, rowsPerPage: 5, ajaxUpdateContainerId: "GridContainer");

现在,我想将“MyContent”列显示为原始HTML。我该怎么做?
<div id="GridContainer">
    @grid.GetHtml(columns:
        grid.Columns(
            grid.Column(
                columnName: "MyContent",
                //Format: What should I put here?
            )
        )
    )
</div>
2个回答

6

使用

<div id="GridContainer">
    @grid.GetHtml(columns:
        grid.Columns(
            grid.Column(
                columnName: "MyContent",
                format: (item) =>
                    {
                       var links = Html.ActionLink("Edit",   "Edit",    new {id = item.PrimaryKey})  + " | " +
                                   Html.ActionLink("Details","Details", new { id = item.PrimaryKey}) + " | "+
                                   Html.ActionLink("Delete", "Delete",  new { id = item.PrimaryKey});

                       return Html.Raw(links);
                    }
                )
            )
        )

这将呈现为

<td>
    <a href="/Home/Edit/5">Edit</a> |
    <a href="/Home/Details/5">Details</a> |
    <a href="/Home/Delete/5">Delete</a>
</td>

谢谢你的帮助。但是如果我只想将所有内容呈现为原始HTML,该怎么办?它只是一个带有标签格式的段落。 - Triet Doan
2
format:(item)=> Html.Raw(item) ,你将获得项目的HTML文本 - Ravi Gadag
不,我得到的是RuntimeBinderException异常,消息为System.Web.Mvc.HtmlHelper.Raw(string)的最佳重载方法匹配有一些无效的参数。我认为这里的item不是一个字符串。 - Triet Doan
哦,我已經找到解決方案了。我應該寫成 item.{我的屬性名稱},就這麼簡單。感謝你的幫助 :D - Triet Doan

0

我认为在模型中使用注释会更加清晰。

[GridColumn(Title="&nbsp;", SanitizeEnabled=false,EncodeEnabled=false)]
    public IHtmlString RateLink
    {
        get{
            return new HtmlString("<a href=\"" + BaseUrl + Id + "\" target=\"_blank\">Open</a>");
        }
    }

如果您只使用注释,您的HTML只需要:

@Html.Grid(Model).AutoGenerateColumns()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接