2013-03-12 59 views
0

當我在本地測試我的Asp.Net webforms頁面時,我厭倦了所有jscript社交窗口小部件/分析初始化混亂了我的調試輸出。所以,我在HTML標記嘗試這樣做:在javascript條件下使用asp.net內聯標籤

<script> 
if (<%= !Request.IsLocal ? "true" : "false" %>) { 

這實際上發出正確的JScript代碼(「如果(真)」),沒有運行時錯誤,但Visual Studio中不喜歡它。我在關閉')'時收到語法錯誤。絕對不喜歡看編譯錯誤,即使它們是假的,每編譯一次也是如此。

我改成了比較字符串,如

if ("<%= Request.IsLocal %>" === "False") { 

其中一期工程,併發出類似代碼「如果(‘真’===‘假’)」,但是......這只是爐排我的神經看起來很醜。這只是一個Visual Studio的怪異,或者有沒有更好的方式來使用jscript條件中的asp.net服務器布爾值?

取決於他們的安置等

如果你真的想避免這種情況,你就必須創造背後的代碼,你的JavaScript

回答

2

你能不能做這樣的事情:

<script> 
    var isLocal = "<%= Request.IsLocal %>" == "True"; 
    ... 

    if(isLocal) { 
    // do local stuff 
    } 
</script> 

VS不抱怨。

+0

是的,根據我的問題,這是我目前使用的解決方案。我的問題是,是否有更好的方法,或者這是否只是一些VS intellisense古怪。 – 2013-03-13 23:08:43

+0

VS intellisense只是混淆,因爲你在混合使用JavaScript和ASP.NET代碼。當您將ASP.NET代碼放在引號內時,intellisense會將其視爲JavaScript字符串,但編譯器會正確替換尖括號<%= %>內的值,因此VS中沒有「投訴」。我的建議是關於在你的JavaScript代碼上隔離這個「醜陋」。另一種做法是從你的代碼中插入JS代碼,但我認爲這並不簡單。 – Floremin 2013-03-14 16:02:55

+0

是的,這似乎是最有意義的這種情況,謝謝。 – 2013-03-15 17:45:14

0

的JavaScript/HTML/CSS +服務器變量的組合將squigly顯示線。

<asp:Literal id="script" runat="server"> 

而在後面的代碼中。

if (Request.IsLocal) { 
    script.Text = "<script>function(){}</script>"; 
} 
+0

這很有趣,可能適用於非常小的腳本,但是...因爲VS只是將您的jscript代碼視爲一個字符串,而不是代碼,所以您失去了intellisense和所有常見編輯器的優點。值得我權衡,但感謝有趣的選擇。 – 2013-03-13 23:07:25