Как вернуть содержимое javascript, не используя теги скрипта из вида? - PullRequest
2 голосов
/ 04 февраля 2012

Я пытаюсь локализовать Javascript на стороне клиента в приложении ASP .NET MVC. Я остановился на том, что хочу вернуть объект 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>

в пределах определения представления. Имея тег script в самом файле .cshtml, я могу сделать внешнюю ссылку на файл .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>

где URL res / MyResources будет отображаться (через пользовательский маршрут) на контроллер, который вызывает представление (или частичное представление), которое обслуживает JavaScript. Проблема, я думаю, в том, что я возвращаю в представлении теги. Я хочу это во время разработки, чтобы я мог получить intellisense. Но когда javascript возвращается во время выполнения, я хочу вернуть содержимое представления (или частичного представления) со скриптами тегов script.

Как вы, вероятно, можете сказать, я довольно зеленый в ASP .NET MVC, так что, надеюсь, то, что я сказал, имеет смысл. Есть ли способ убрать метки внутри контроллера? Я полагаю, что я мог бы что-то сделать на стороне клиента (возможно, с помощью JQuery), но я бы предпочел, чтобы все получалось как внешний файл vanilla javascript.

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Я нашел ответ, который искал, на форуме MSDN ASP .NET.Вот ответ:

http://forums.asp.net/p/1765704/4819373.aspx/1?p=True&t=634641505060799388

1 голос
/ 05 февраля 2012

В вашем контроллере вам нужно установить Response.ContentType = "text/javascript";

Я не уверен, как вы можете иметь intellisense и не выводить теги скрипта.Вы можете сделать что-то вроде:

@if(false) {
     <script>
}

javascript code here

@if(false) {
     </script>
}

РЕДАКТИРОВАТЬ : просто заметка о безопасности, файлы сценариев, доступ к которым осуществляется таким образом, могут быть перенаправлены в браузер через домен и уязвимы для атактак что вам следует избегать чего-либо чувствительного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...