2012-02-03 59 views
2

我想在ASP .NET MVC應用程序中本地化客戶端Javascript。我已經解決了這個問題,我想從視圖頁面返回一個JavaScript對象。如何返回JavaScript內容而不包含視圖中的腳本標記?

的想法非常相似,這裏所描述的那樣: http://blogs.msdn.com/b/robj/archive/2009/03/12/localized-javascript-resources-with-mvc.aspx

目前還不清楚我從博客文章有什麼看法(或局部視圖?)的模樣。我想這樣做:

<script type = "text/javascript"> 
ForumsRes = 
{ 
    prompt_clearAbuseReason: <%=  AntiXss.JavaScriptEncode(Resource.prompt_clearAbuseReason) %>,  
    prompt_deleteReason: <%= AntiXss.JavaScriptEncode(Resource.prompt_deleteReason) %>,  
    prompt_pageExit: <%= AntiXss.JavaScriptEncode(Resource.prompt_pageExit) %>,  
    prompt_reportAbuseReason: <%= AntiXss.JavaScriptEncode(Resource.prompt_reportAbuseReason) %>,  
    prompt_stickyUntil: <%= AntiXss.JavaScriptEncode(Resource.prompt_stickyUntil) %>,  
    prompt_undeleteReason: <%= AntiXss.JavaScriptEncode(Resource.prompt_undeleteReason) %>,  
    rte_alreadyOpen: <%= AntiXss.JavaScriptEncode(Resource.rte_alreadyOpen) %>} 
</script> 

內的視圖定義。通過在.cshtml文件中實際使用script標籤,我可以對.cshtml文件進行外部引用,並且我將獲得intellisense(根據http://weblogs.asp.net/scottgu/archive/2007/06/21/vs-2008-javascript-intellisense.aspx)。

不過,我想從另一個觀點引用JavaScript(真的.cshtml文件)是這樣的:

<script type="text/javascript" src="@Url.Content("~/res/MyResources")"></script> 

其中RES/URL爲MyResources將映射(通過自定義路線)到控制器調用提供JavaScript的視圖(或部分視圖)。問題是,我認爲,我在視圖中返回的內容包括標籤。我在設計時想要這個,所以我可以得到intellisense。但是當javascript在運行時返回時,我想用腳本標記返回視圖(或部分視圖)的內容。

正如你可以告訴,我在ASP .NET MVC非常綠色,所以希望我說的有道理。有沒有辦法去掉控制器內的標籤?我想我可以在客戶端做一些事情(也許使用JQuery),但我寧願有什麼服務是一個香草JavaScript外部文件。

回答

1

在你的控制器,你需要設置Response.ContentType = "text/javascript";

我不知道你怎麼能有智能感知,而不是有腳本標記輸出。您可以做一些事情,如:

@if(false) { 
    <script> 
} 

javascript code here 

@if(false) { 
    </script> 
} 

編輯:安全只是注意,訪問這樣的腳本文件可以在瀏覽器中拉跨域,並很容易受到攻擊,所以你應該避免任何敏感。

+0

謝謝保羅!我敢肯定,關於ContentType的提示將證明是有用的。到目前爲止,我的控制器看起來像這樣: – Notre 2012-02-06 22:39:30

+0

ATSYMBOL { Layout = null; } ATSYMBOLlif(假){ <腳本類型= 「文本/ JavaScript的」> } 變種externalFunc =函數(參數){ 警報( 「參數:」 +參數); }; ATSYMBOLif(false) { } – Notre 2012-02-06 22:49:43

+0

我實際上在設計時(在文件頂部預期關閉)出錯)。在運行時,腳本不會被加載...對這些註釋的格式化抱歉;我不知道如何輸入代碼塊或換行符:( – Notre 2012-02-06 22:51:41

相關問題