如何从助手返回剃刀标记?

时间:2012-05-16 21:49:15

标签: asp.net-mvc-3 razor helper javascript-intellisense

最近我写了一个javascript库来减少我正在做的复制粘贴量。我觉得任何时候我复制粘贴代码都有机会使它成为通用的,所以我可以重复使用它。

创建我的库后,我想在.cshtml视图中使用它。所以,我使用了脚本链接和vuala,它可用。但是,Visual Studio 2010的IntelliSense根本没有帮助。事实上,它显示的只是常规的javascript选项。

我打算让IntelliSense与我的库一起工作。搜索高和低后I figured it out(谢谢@SLaks)。 js IntelliSense问题的链接答案是用剃须刀@if(false){<script>}包围脚本链接,以使IntelliSense能够在该视图中使用链接脚本。

所以,我想,

Visual Studio 2010 for razor中的所有脚本链接是否应该使用此标记包围?

@if (false)
{
 <script src="/Scripts/r.js" type="text/javascript"></script>
}else{
 <script src="@Url.Content("~/Scripts/r.js")" type="text/javascript"></script>
}

这对我来说很好看,所以我开始将它合并,只是为了发现我再次复制粘贴。我想我可以使用一个“简单”的助手,也许@Html.Script(source)。不幸的是,我不确定如何从帮助者那里返回剃刀标记。

我试过了:

    public static void Script(
this HtmlHelper html, string source)
    {
        html.ViewContext.Writer.Write("@if(false){}else{}");
    }

但它只是将字符串写到屏幕上:(

如何从助手返回剃刀标记?或者,是否有另一个流程可以用来完成重复使用?

1 个答案:

答案 0 :(得分:0)

您无法渲染帮助程序中生成的Razor标记。剃刀引擎首先解析剃刀代码,然后执行帮助程序。 Helper的结果只能用于生成html标记。