Обслуживание локального файла на веб-сайте ASP.NET MVC - PullRequest
1 голос
/ 17 ноября 2010

Допустим, у меня есть файл, расположенный по адресу C:\foo\bar.js, и я хочу включить этот файл в веб-сайт ASP.NET MVC, который, очевидно, находится на той же машине.

Это не работает:

<script src="C:\foo\bar.js"></script>

И это тоже не так:

<script src="file:///C:/foo/bar.js"></script>

Приведенные выше две строки также не имеют смысла, так как они будут смотреть на папку клиента, а не на папку сервера.

Итак, как я могу передать этот файл из контроллера ASP.NET MVC (в контроллере у меня есть строковое значение пути локального физического файла, т.е. C:\foo\bar.js) к представлению? Может быть, что-то с HttpHandler?

Ответы [ 2 ]

3 голосов
/ 17 ноября 2010

Примечание. В этом решении предполагается, что файл js не является частью веб-приложения.Если это так, вы, вероятно, должны использовать вместо этого Url.Content или ResolveClientUrl ..

Вы должны иметь возможность связать URL-адрес действия контроллера в теге скрипта:

<script src="/ControllerName/GetJavascriptFile"></script>

...и иметь действие, как ::

public ActionResult GetJavascriptFile() {
   string mp = @"C:\foo\bar.js";
   return File(mp, "text/javascript");
}

http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.file(VS.90).aspx

1 голос
/ 17 ноября 2010

Как я это делал - предположим, у вас есть папка с именем Scripts вне корня (то есть параллельно Controllers, Models и т. Д.), И вы храните в ней файлы JavaScript, вы можете использовать это:

<script 
 src="<%=Url.Content("~/Scripts/jQuery-1.3.2.js")%>" 
 type="text/javascript">
</script>

(разбить на несколько строк, чтобы было легче читать)

Предполагается, что ваш вопрос заключается в том, как связать с местоположением .jsвключайте файлы, но подобный прием можно применить к любым файлам содержимого (например, к установщикам плагинов или еще что-то)

...