用MVC3 / Razor渲染模板化的HtmlHelper

时间:2011-04-12 10:03:32

标签: templates asp.net-mvc-3 html-helper

我有一个HtmlHelper将网格呈现为表格,在MVC2中我会使用以下语法从视图中调用它...

<%=
    Html.MyLibrary().Grid<MyGridItem>()
        .Name("MyGrid")
        .Width("100%")
        .Render()
%>

注意它使用模板。在使用Razor的MVC3中,它不会编译,似乎因为左尖括号'&lt;'正在混淆html。为了解决这个问题,我可以用花括号括起来......

@{Html.MyLibrary().Grid<MyGridItem>()
        .Name("MyGrid")
        .Width("100%")
        .Render();}

但现在问题是从.Render()返回的字符串没有放入输出流中!

任何帮助解决这个问题都会非常感激。

1 个答案:

答案 0 :(得分:0)

您应该使用Html.Raw()方法。

@Html.Raw(Html.MyLibrary().Grid<MyGridItem>()
        .Name("MyGrid")
        .Width("100%")
        .Render())

@ {...}服务器端块不会被渲染,因为它是简单的服务器端代码。如果你写了

,也一样
@{ "renderedstring".ToString(); }