Asp.net mvc 在页面开始呈现之前,有没有巧妙的方法来注入JQuery?
我希望用最少的代码将jQuery插入到每个页面中。。。 换句话说,我不想在每个aspx页面上都写Asp.net mvc 在页面开始呈现之前,有没有巧妙的方法来注入JQuery?,asp.net-mvc,webforms,web-config,Asp.net Mvc,Webforms,Web Config,我希望用最少的代码将jQuery插入到每个页面中。。。 换句话说,我不想在每个aspx页面上都写 到目前为止,我考虑过使用基类并在“页面加载”事件中插入“Response.Write”。 除此之外,我还有什么其他选择。。。web.config?还有别的吗 Webforms/MVC解决方案的额外积分。谢谢你的建议 编辑: 找到了我最喜欢的答案 作者和我一样,不喜欢ClientScript.RegisterClientScriptBlock的标准实现,因为各种原因(比如MSFT坚持使用表单runat
到目前为止,我考虑过使用基类并在“页面加载”事件中插入“Response.Write”。
除此之外,我还有什么其他选择。。。web.config?还有别的吗
Webforms/MVC解决方案的额外积分。谢谢你的建议
编辑:
找到了我最喜欢的答案
作者和我一样,不喜欢ClientScript.RegisterClientScriptBlock的标准实现,因为各种原因(比如MSFT坚持使用表单runat=server标记),并构建了一个更好的捕鼠器。如果您已经包括
<html><head><title>Title</title></head><body>...</body></html>
标题。。。
在每一页中,我相信你都能挤出一个
<script ...></script>
但我仍然同意肯的观点:看看母版页。如果你已经包括
<html><head><title>Title</title></head><body>...</body></html>
标题。。。
在每一页中,我相信你都能挤出一个
<script ...></script>
但我仍然同意Ken的观点:看看母版页。不知道您是架构,这可能很难笼统地回答
但是,我可以建议,如果您最终不得不修改所有页面,将它们设置为使用include,如果您必须更新jquery版本或添加$(document).ready()函数或添加任何jquery插件,您可以修改include,而不必重新修改所有页面。不知道您的架构,这可能很难笼统地回答 但是,如果您最终不得不修改所有页面,请将它们设置为使用include,如果您必须更新jquery版本或添加$(document).ready()函数或添加任何jquery插件,您可以修改include,而不必重新修改所有页面。方法是在页面底部加载javascript,以防止脚本减缓初始页面加载 由于您还特别提到了jquery,我建议在母版页末尾使用以下代码:
<script src="http://www.google.com/jsapi"></script>
<script>
// Load jQuery
google.load("jquery", "1");
</script>
//加载jQuery
load(“jquery”,“1”);
这样做的好处是,您的用户可能已经在浏览器中缓存了jquery的这个副本,并且您将始终使用最新版本来引导:)
如果您使用的是母版页,则不需要将脚本“插入到每个页面中”。关键是在页面底部加载javascript,以防止脚本减缓初始页面加载
由于您还特别提到了jquery,我建议在母版页末尾使用以下代码:
<script src="http://www.google.com/jsapi"></script>
<script>
// Load jQuery
google.load("jquery", "1");
</script>
//加载jQuery
load(“jquery”,“1”);
这样做的好处是,您的用户可能已经在浏览器中缓存了jquery的这个副本,并且您将始终使用最新版本来引导:)
如果您使用的是母版页,则不需要将脚本“插入每个页面”。您可以在全局asax中挂钩到页面生命周期的任何事件:
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
Page page = this.Context.CurrentHandler as Page;
if( page != null )
page.Load += new EventHandler(page_Load);
}
void page_Load(object sender, EventArgs e)
{
Page page = (Page)this.Context.CurrentHandler;
page.ClientScript.RegisterClientScriptInclude("jquery", jqueryurl);
}
另外,我认为您也可以使用http模块来实现这一点。您可以在全局asax中连接到页面生命周期的任何事件:
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
Page page = this.Context.CurrentHandler as Page;
if( page != null )
page.Load += new EventHandler(page_Load);
}
void page_Load(object sender, EventArgs e)
{
Page page = (Page)this.Context.CurrentHandler;
page.ClientScript.RegisterClientScriptInclude("jquery", jqueryurl);
}
另外,我认为您也可以使用http模块来实现这一点。使用母版页并将其放在顶部。有人说把它放在底部,但在第一次加载之后,它会被缓存,如果你想操纵DOM,我个人宁愿在我的用户真正开始看到呈现的页面之前进行操作。将其放在底部肯定会导致这种情况发生,可能会让用户感到困惑,并导致糟糕的用户体验。使用母版页并将其放在顶部。有人说把它放在底部,但在第一次加载之后,它会被缓存,如果你想操纵DOM,我个人宁愿在我的用户真正开始看到呈现的页面之前进行操作。将其放在底部肯定会导致这种情况发生,可能会让用户感到困惑,并导致糟糕的用户体验。似乎微不足道。我的心为你流着血。这很琐碎,除非你正在寻找一个“圆滑”和“聪明”的解决方案,它不会触及我所有的页面。我很抱歉,我以为你只是太懒了。:)似乎微不足道。我的心为你流着血。这很琐碎,除非你正在寻找一个“圆滑”和“聪明”的解决方案,它不会触及我所有的页面。我很抱歉,我以为你只是太懒了。:)我认为“#includes”作为一个经典的ASP专用解决方案不受欢迎,不适合ASP.NET。对吗?我认为“#includes”作为一个经典的纯ASP解决方案不受欢迎,不适合ASP.NET。对吗?上次加载javascript的建议来自Yahoo的web性能团队,在O'reilly出版的《高性能网站》一书中也有推荐。唯一需要注意的是使用脚本调用document.write最后加载javascript的建议来自Yahoo的web性能团队,O'reilly出版的《高性能网站》一书中也推荐了这一建议。唯一的警告是使用调用document.write的脚本