设置主体'的OnLoad属性
Setting the Body's OnLoad attribute in an Asp.net MVC Master Page
我有一个使用母版页的视图,其中包含一些需要使用Body的OnLoad执行的javascript。在我的主页上只为某些视图设置OnLoad的最佳方式是什么?
我尝试的想法是将javascript函数的名称传递为ViewData。但我真的不想让我的控制器知道页面上的javascript。我真的不喜欢这种方式。。。
<body onload="<%=ViewData["Body_OnLoad"]%>">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
编辑-我想一个想法是使用jQuery的文档就绪事件。。。
还有其他想法吗?
既然JQuery正式成为ASP.NET MVC的一部分,我建议您使用它。它很小,可以为您的应用程序增加很多价值。
我建议添加Mustafa版本的JQuery,其中包含Intellisense注释:
jquery-1.2.6-intellise.js
然后将它添加到Scripts文件夹(MVC Beta 1中的新文件夹),并像这样引用它:
<script language="javascript" type="text/javascript" src="../../Scripts/jquery-1.2.6-intellisense.js"></script>
在您的代码中,您现在可以添加这样的函数:
$(document).ready(function() {
// do stuff when DOM is ready
});
既然你提到你只希望它发生在某些视图中,你可以在母版页中添加一个占位符,如下所示:
<asp:contentplaceholder id="JavascriptPlaceholder" runat="server"></asp:contentplaceholder>
然后在您的视图中,您可以选择是否将代码放入其中。
它将进入头部的内部
来自博客的解决方案:使用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>
我在当前的MVC项目中使用了以下模式,到目前为止,它似乎对我的.js工作非常有效。。。
在我的母版页中,我加载我想在所有内容页中使用的标准脚本文件(如jquery.js、global.js、jquery-plugins、.css文件等)。然后我定义母版页所需的任何事件(onLoad、onSave等)。我创建的每个内容页都有自己的.js文件,并在内容中加载该脚本文件.aspx页面。任何需要在内容页之间以不同方式实现的.js事件都在单独的content.js文件中处理。所以基本上我的主页有一组.js函数,我的内容页脚本将实现这些函数。现在,我只需将这些template.js函数签名存储在一个文件中,然后将它们复制并粘贴到我需要创建的每个新的content.js文件中。然而,我正在考虑构建一个代码生成器或工具,在我需要创建的任何新.js文件中为我吐出这些模板签名(如果.js具有某种形式的接口功能或继承功能,请告诉我)。
综上所述:
MasterPage.Master加载:jquery.js,global.js,plugins.js
ContentPage加载:ContentPage.js
Global.js包含母版页调用的函数,这些函数与任何其他全局例程函数一起在内容页之间不发生变化。
每个ContentPage.js都为内容页实现自己的函数,以及母版页调用的具有不同行为的函数。
您肯定应该使用jQuery或其他JavaScript框架。
让控制器将某种状态指示器传递给视图,但不传递视图特定的东西,如JavaScript函数的名称。将状态指示器映射到JavaScript函数名取决于您的视图。
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- JavaScript-动态SVG-onload属性-未触发事件
- 未捕获的类型错误:无法设置属性'onclick'为null.已尝试window.onload
- XDomainRequest onload上对方法或属性访问的意外调用
- 动态插入文件时触发 onload 属性.js
- Javascript onload 不起作用(“uncatch TypeError:无法将属性'document
- IFRAME中的SRC属性随onload函数而变化
- 所有元素都可以具有onload属性
- Iframe属性onload被调用多次
- 对象属性上的Image onload调用
- 与HTML事件属性(edge animate)中的onload方法相反
- 无法在onload属性中声明变量
- 自动加载弹出,不使用主体标签中的onload属性
- 可以onload属性代替$(window).load(…)
- 设置主体'的OnLoad属性