Методы действий контроллера ASP.NET MVC в основном используются для обработки бизнес-операций, но их можно использовать для большего количества.
Я подумал, что было бы интересно увидеть, какие творческие и полезные вещи люди создали для этого, что может быть практичным или полезным для других.
Здесь мой вклад:
Конкатенатор файла Javascript - уменьшить количество HTTP-запросов:
[OutputCache(Duration = 5 * 60, VaryByParam="")] // DONT USE "None" here *
public ContentResult RenderJavascript(){
StringBuilder js = new StringBuilder();
StringWriter sw = new StringWriter(js);
// load all my javascript files
js.AppendLine(File.ReadAllText(Request.MapPath("~/Scripts/jquery.hoverIntent.minified.js")));
js.AppendLine(File.ReadAllText(Request.MapPath("~/Scripts/jquery.corner.js")));
js.AppendLine(File.ReadAllText(Request.MapPath("~/Scripts/rollingrazor.js")));
return new ContentResult()
{
Content = js.ToString(),
ContentType = "application/x-javascript"
};
}
Сопоставьте маршрут к нему:
// javascript
routes.MapRoute(
"js-route",
"dynamic/js",
new { controller = "Application", action = "RenderJavascript" }
);
Обратитесь к нему со своей главной страницы:
<script type="text/javascript" src="/dynamic/js"></script>
Будьте осторожны. Я установил кеш для вывода, поэтому, если вы меняете свой JS и обновляете страницу, вы можете отключить кеш!
Мне нужно вернуться и выяснить, как это сделать.
*
Вы не должны использовать VaryByParam = "None", потому что это вызывает отправку заголовка Vary, который заставляет браузер возвращаться и проверять новую версию. Если вам действительно нужно изменить свой js-контент, тогда ваши пользователи просто будут ждать 5 минут для этого!