ASP.NET MVC маршрутизация и пути к файлам js - PullRequest
4 голосов
/ 02 июня 2010

мы столкнулись с проблемой сейчас. У нас есть довольно большая страница со встроенным скриптом, который выполняет всю работу. Теперь мы хотим запутать его и использовать в качестве отдельного файла .js. Но проблема в том, что у нас есть пути, которые генерируются помощником Url (Url.Content ()). Так как же лучше всего отделить файл js от страницы и не использовать жестко заданные строки пути?

Ответы [ 2 ]

9 голосов
/ 02 июня 2010

Я обычно пишу свой javascript в отдельных представлениях (только с кодом js) и использую свой собственный результат действия для его рендеринга. Таким образом, я могу использовать преимущества c # на стороне сервера и при необходимости использовать модель, которая будет включена в качестве внешнего js-файла в браузере (с соответствующим кэшированием). Результат действия, который я использую, можно найти здесь: http://codepaste.net/p2s3po

Обновление

Вы можете использовать результат действия следующим образом:

public ActionResult JsFile() {
    ViewData.Model = //Create model if you want one;
        return new JavascriptFileResult(true)
                   {
                       TempData = TempData,
                       ViewData = ViewData
                   };
}

Тогда вы просто относитесь к нему, как к обычному представлению (но пишите только javascript в представлении). Вы также можете выбрать любое количество параметров.

Вы можете включить его так:

<script type="text/javascript" src="<%=Url.Action("JsFile", "ControllerName")%>"></script>
0 голосов
/ 02 июня 2010

Вы можете создавать функции javascript для установки необходимых путей и вызывать их из небольшого раздела скрипта со страницы.

Файл Javascript:

var resource1;
var resource2;

function setResourcesReferences(resource1, resource2, ...) {

}

ASPX файл:

<script type="text/javascript">
   setResourcesReferences(<% Url.Content("Resource1") %>, <% Url.Content("Resource2") %>, ...);
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...