【发布时间】:2012-05-24 12:41:16
【问题描述】:
最近我写了一个 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{}");
}
但它只是将字符串写到屏幕上:(
如何从助手返回剃刀标记?或者,我是否可以使用另一个过程来完成使其可重复使用?
【问题讨论】:
-
您不需要返回 Razor 标记,只需返回一个字符串 - 脚本标记!
-
@asawyer - 但是它不会触发 IntelliSense 的解决方法
-
噢,我明白你在问什么。不,这是对 Visual Studio 的 javascript intellisense 的一个令人讨厌的限制,但总比没有好。
-
@asawyer - 事实上,我想我有一个解决方案:)。如果它有效,我会将其作为我的答案发布,以便其他人希望不会将头撞到我撞到的同一堵墙上:)。它涉及使用局部视图来动态包含脚本。
-
@asawyer - 唉,我得到了部分视图(从助手调用),希望我可以在其他地方重用代码,因为它没有完成我所希望的。尽管链接脚本可用,但没有 IntelliSense,因为该脚本仅在运行时可用。悲伤的脸。
标签: asp.net-mvc-3 razor helper javascript-intellisense