不要在asp.net razor中使用html编码字符串

时间:2011-02-20 01:09:39

标签: asp.net-mvc asp.net-mvc-3 razor

我正在使用razor语法跟踪here上的代码。我最终得到了这个:

我试过了:

@{Html.Grid("basic")
    .setCaption("Basic Grid")
    .addColumn(new Column("JobId")
        .setLabel("Id"))
    .addColumn(new Column("Title"))
    .addColumn(new Column("CreatedDate"))
    .setUrl(Url.Action("Jobs"))
    .setAutoWidth(true)
    .setRowNum(10)
    .setRowList(new int[]{10,15,20,50})
    .setViewRecords(true)
    .setPager("pager");}

并且它什么都没显示。我从@开始,它编码了数据。

2 个答案:

答案 0 :(得分:3)

尝试:

@(new MvcHtmlString(Html.Grid("basic")
.setCaption("Basic Grid")
.addColumn(new Column("JobId")
    .setLabel("Id"))
.addColumn(new Column("Title"))
.addColumn(new Column("CreatedDate"))
.setUrl(Url.Action("Jobs"))
.setAutoWidth(true)
.setRowNum(10)
.setRowList(new int[]{10,15,20,50})
.setViewRecords(true)
.setPager("pager").ToString())

如果您不希望对网格进行编码,则网格应返回MvcHtmlString(或仅IHtmlString)。最好的解决方案是编写名为ToMvcHtmlString()的扩展方法,它返回正确的值。然后你只需使用Html.Grid().ToMvcHtmlString()。它比在视图中创建对象更好。

答案 1 :(得分:0)

试试这个:

@{ var grid = Html.Grid("basic")
.setCaption("Basic Grid")
.addColumn(new Column("JobId")
    .setLabel("Id"))
.addColumn(new Column("Title"))
.addColumn(new Column("CreatedDate"))
.setUrl(Url.Action("Jobs"))
.setAutoWidth(true)
.setRowNum(10)
.setRowList(new int[]{10,15,20,50})
.setViewRecords(true)
.setPager("pager");
}

Html.Raw(grid.ToString());

更好的是grid.ToString()返回一个IHtmlString,所以你不需要Html.Raw它