Asp.net mvc 3 如何从帮助器返回razor标记?

Asp.net mvc 3 如何从帮助器返回razor标记?,asp.net-mvc-3,razor,helper,javascript-intellisense,Asp.net Mvc 3,Razor,Helper,Javascript Intellisense,最近,我编写了一个javascript库来减少复制粘贴的数量。我觉得每当我复制粘贴代码时,都有机会使其成为通用代码,这样我就可以重复使用它 在创建我的库时,我想在.cshtml视图中使用它。所以,我使用了脚本链接和vuala,它是可用的。然而,VisualStudio2010的IntelliSense一点帮助都没有。事实上,它只显示了常规javascript选项 我开始让IntelliSense与我的图书馆合作。上下搜索后(谢谢)。js IntelliSense问题的链接答案是用razor@if

最近,我编写了一个javascript库来减少复制粘贴的数量。我觉得每当我复制粘贴代码时,都有机会使其成为通用代码,这样我就可以重复使用它

在创建我的库时,我想在.cshtml视图中使用它。所以,我使用了脚本链接和vuala,它是可用的。然而,VisualStudio2010的IntelliSense一点帮助都没有。事实上,它只显示了常规javascript选项

我开始让IntelliSense与我的图书馆合作。上下搜索后(谢谢)。js IntelliSense问题的链接答案是用razor
@if(false){}
围绕脚本链接,以便IntelliSense在该视图中使用链接脚本

所以我想,

VisualStudio2010 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>
}
但它只是将字符串写到屏幕上:(


如何从帮助程序返回razor标记?或者,我是否可以使用另一个过程来实现此可重用性?

您不能呈现帮助程序中生成的razor标记。razor引擎首先解析razor代码,然后执行帮助程序。帮助程序的结果只能用于生成html标记。

您不需要返回razor标记,只是一个字符串-脚本标记!@asawyer-但它不会触发intellisense的解决方案哦,我明白你的要求。不。这是对visual studio的javascript intellisense的一个令人恼火的限制,但它总比什么都没有好。@asawyer-事实上,我想我有一个解决方案:)。我会把它作为我的答案贴出来,如果它有效的话,希望其他人不会撞到我撞到的那堵墙:)。它涉及到使用局部视图来动态包含脚本。@asawyer-叹气,我让局部视图工作了(从助手处调用),希望我可以在其他地方重新使用代码,因为它没有实现我所希望的。虽然链接的脚本可用,但没有IntelliSense,因为该脚本仅在运行时可用。悲伤的脸。
    public static void Script(
this HtmlHelper html, string source)
    {
        html.ViewContext.Writer.Write("@if(false){}else{}");
    }