2012-05-16 35 views
0

最近我寫了一個JavaScript庫來減少我正在做的複製粘貼量。我覺得任何時候我複製粘貼代碼都有機會使其具有通用性,所以我可以重新使用它。如何從助手返回剃鬚刀標記?

製作我的圖書館時,我想在.cshtml視圖中使用它。所以,我使用腳本鏈接和vuala,它是可用的。但是,Visual Studio 2010的IntelliSense並沒有真正的幫助。實際上,它顯示的只是常規的JavaScript選項。

我着手使IntelliSense與我的庫一起工作。經過高低搜索I figured it out(謝謝@SLaks)。關於js IntelliSense問題的鏈接答案是用剃刀@if(false){<script>}包圍腳本鏈接,以便使IntelliSense能夠在該視圖中與鏈接的腳本一起工作。

所以,我想,

應該剃刀在Visual Studio 2010中的所有腳本的鏈接與此標記包圍?

@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{}"); 
    } 

,但它只是寫入字符串輸出到屏幕:(

如何從一個輔助返回剃刀標記OR,是有另一種過程,我可以用來完成這個可重用的工作?

+0

您不需要返回剃刀標記,只需一個字符串 - 腳本標記! – asawyer

+0

@asawyer - 但然後它不會觸發智能感知的解決方法 –

+0

Ooooh我看到你的問題。不,這是對視覺工作室的javascript intellisense的一個惱人的限制,但最好不要。 – asawyer

回答

0

你不能渲染助手中產生的Razor標記,剃鬚刀引擎首先解析剃刀代碼,然後執行助手,助手的結果只能用於產生html標記。