Vyr*_*tek 3 javascript asp.net-mvc master-pages
我有一个使用母版页的视图,其中包含一些需要使用Body的OnLoad执行的javascript.仅针对某些视图在我的MasterPage上设置OnLoad的最佳方法是什么?
我试过的想法是将javascript函数的名称作为ViewData传递.但我真的不希望我的控制器必须知道页面上的javascript.我真的不喜欢这种方法......
<body onload="<%=ViewData["Body_OnLoad"]%>">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
Run Code Online (Sandbox Code Playgroud)
编辑 - 我想一个想法是使用jQuery的文档就绪事件而不是......
还有其他想法吗?
现在JQuery正式成为ASP.NET MVC的一部分,我建议使用它.它很小,为您的应用程序增加了大量的价值.
我建议添加Mustafa的JQuery版本,其中包含Intellisense评论:
然后将其添加到您的Scripts文件夹(MVC Beta 1中的新增内容),并像这样引用它:
<script language="javascript" type="text/javascript" src="../../Scripts/jquery-1.2.6-intellisense.js"></script>
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您现在可以添加如下函数:
$(document).ready(function() {
// do stuff when DOM is ready
});
Run Code Online (Sandbox Code Playgroud)
既然你提到你只想在某些视图中发生它,你可以在你的母版页中添加一个占位符,如下所示:
<asp:contentplaceholder id="JavascriptPlaceholder" runat="server"></asp:contentplaceholder>
Run Code Online (Sandbox Code Playgroud)
然后在您的视图中,您可以选择将代码放在那里.
哪个会进入头部
来自Blog的解决方案:在ASP.net 2.0 MasterPages中使用body onload
MasterPage.master
<head>
<asp:ContentPlaceHolder runat="server" id="Headers">
</asp:ContentPlaceHolder>
<script language=javascript>
function mp_onload() {
if(window.body_onload != null)
window.body_onload();
}
</script>
</head>
<body onload="mp_onload();">
Default.aspx
<asp:Content ID="Content2" ContentPlaceHolderID="Headers" Runat="Server">
<script language="javascript">
function body_onload()
{
//do something
}
</script>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20086 次 |
| 最近记录: |