Asp.net mvc 不要在asp.net中对字符串进行html编码
我正在用razor语法跟踪上的代码。我的结论是: 我试过这个:Asp.net mvc 不要在asp.net中对字符串进行html编码,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,我正在用razor语法跟踪上的代码。我的结论是: 我试过这个: @{Html.Grid("basic") .setCaption("Basic Grid") .addColumn(new Column("JobId") .setLabel("Id")) .addColumn(new Column("Title")) .addColumn(new Column("CreatedDate")) .setUrl(Url.Action("Jobs"
@{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");}
它什么也不显示。我让它从@
开始,然后对数据进行编码。试试:
@(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()
。这比在视图内部创建对象要好。尝试以下方法:
@{ 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它了我正在查看它们的源代码,它们似乎不返回字符串,而是返回某个对象。@Lol coder:ToString()方法肯定会返回字符串。看看这个方法。