【发布时间】:2010-10-03 22:02:09
【问题描述】:
ASP.NET MVC 控制器操作方法主要用于处理“业务”操作,但它可以用于更多。
我认为看看人们创造了哪些创意、有用的东西可能对其他人实用或有用的行为会很有趣。
这是我的贡献:
Javascript 文件连接器 - 到 reduce number of http requests:
[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 标头,causes the browser to go back and check for a new version。如果你真的要更改你的 js 内容,那么你的用户只需要等待 5 分钟!
【问题讨论】:
-
哈!此代码实际上因 RC1 而失败。他们在 Controller 上添加了一个新的 File() 方法,这意味着您需要将 File 替换为 System.IO.File
-
.NET 3.5 SP1 脚本组合不能在这里工作吗? asp.net/Learn/3.5-SP1/video-296.aspx
-
如果可以根据每个页面上需要的脚本文件进行更改以动态呈现脚本文件,那就更好了。
-
哎呀!我认为这是我关于 HtmlExtension 方法的聪明事情的问题,我只是给了它 150 赏金。哦,好吧!
-
对于资产管理,请查看此方法:weblogs.asp.net/rashid/archive/2009/05/02/…
标签: .net asp.net-mvc actionmethod