2012-02-03 62 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

相关问题