我在一个方法中打印出html。这是代码:
@Html.Raw(Html.GenerateTabs()) //works -- but is inconvinent
真的不想做这样的每一个方法。这是我想要的方式。但它不起作用。当我在浏览器中运行代码html打印时。
@Html.GenerateTabs() //prints html in the broswer
<text>@Html.GenerateTabs()</text> //prints html in the broswer
是否有一种剃刀友好的方式来做到这一点?
答案 0 :(得分:11)
如果您的代码输出MvcHtmlString而不是字符串,它将正确输出其中包含的HTML。
使用带有HTML的字符串,使用静态工厂方法构造MvcHtmlString。
public MvcHtmlString OutputHtml() {
return MvcHtmlString.Create("<div>My div</div>");
}
然后在视图中:
@OutputHtml()
答案 1 :(得分:2)
Razor默认编码。到目前为止,我还没有在视图级别或应用程序级别找到关闭它。
也许可以进行扩展?
public static MvcHtmlString RawHtml(this string original)
{
return MvcHtmlString.Create(original);
}
...
@Html.GenerateTabs().RawHtml();
答案 2 :(得分:1)
只需让你的GenerateTabs返回一个MvcHtmlString。
它与此处的其他帖子类似,但为什么要通过另一种方法输出原始html而不是仅指定Html.Raw。 IE我不是在提倡另一种方法,如下所示,只是确保你的GenerateTabs返回MvcHtmlString。
答案 3 :(得分:1)
您可能想在App_Code文件夹中创建一个帮助程序。 这里的代码已编译完毕,可用于所有剃刀视图。
添加一个文件,例如SiteHelper.cshtml,并在其中添加辅助方法
@helper GenerateTabs()
{
<div>blah</div>
}
然后在任何剃须刀视图中使用它
@SiteHelper.GenerateTabs()