我有web应用程序,我想在body onload方法上调用一个方法。
我有这样的方法
<body id="pageid1" onload="SetupFeaturedProperty(1,['http://www.brightlogic-estateagents.co.uk/MRUS/upload/918-1.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/918-2.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/918-3.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/918-4.jpg']);SetupFeaturedProperty(2,['http://www.brightlogic-estateagents.co.uk/MRUS/upload/665-1.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/665-2.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/665-3.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/665-4.jpg']);SetupFeaturedProperty(3,['http://www.brightlogic-estateagents.co.uk/MRUS/upload/38-1.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/38-2.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/38-3.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/38-4.jpg']);SetupFeaturedProperty(4,['http://www.brightlogic-estateagents.co.uk/MRUS/upload/122-1.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/122-2.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/122-3.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/122-4.jpg']);SetupFeaturedProperty(5,['http://www.brightlogic-estateagents.co.uk/MRUS/upload/1076-1.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/1076-2.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/1076-3.jpg', 'http://www.brightlogic-estateagents.co.uk/MRUS/upload/1076-4.jpg']);">
这些方法的论点可以在一段时间后改变。
我希望在加载页面时传递参数。
我已经尝试了很多方法将参数从代码隐藏页面传递到此页面,但它无效。 请让我知道一个更好的解决方案。
由于
答案 0 :(得分:1)
使用它:
Page.ClientScript.RegisterStartupScript(this.GetType(), "myScript",getScript(),true);
然后:
private string getScript()
{
return "SetupFeaturedProperty(etc,etc,etc);";
}
如果您使用的是UpdatePanel,请使用ScriptManager类而不是Page.ClientScript
答案 1 :(得分:1)
有多种方法可以做到这一点。您可以使用RegisterClientScript方法注册脚本。您可以将body标记设置为服务器控件,并在后面的代码中设置它的onload属性,或者您可以使用Literal标记。然而,我发现最干净的方法是创建一个JS变量并使用服务器端代码分配它的值,然后在JS代码中使用此变量:
<script> var someVariable = <%= SomeProperty %>;</script>
确保在页面中定义属性,而不是在标记中移动所有代码。
另一个好方法是为事件定义一个函数,该函数将元素作为输入(将其作为参数传递),然后将实际参数作为不同的属性附加到元素。
<body runat="server" id="body" onload="onLoad(this)" data-someArg="someValue">...
您可以像这样设置代码背后的属性
body.Attributes["data-someArg"] = "someValue";
这在HTML4中无效,但在所有浏览器中都可以正常使用,只要在属性名称前加上数据,它就会在HTML5中有效 -
答案 2 :(得分:0)
使用ClientScript.RegisterStartupScript。检查MSDN:
答案 3 :(得分:0)
一种方法是在javascript中设置Literal标记。例如:
function somemethod()
{
var number1 = 10;
var number2 = <asp:Literal ID="litNumberFromCode" runat="server"/>;
alert(number1 + number2);
}
然后在您的代码中访问该控件之后的任何其他代码:
litNumberFromCode.Text = 15;
答案 4 :(得分:0)
尝试使用内联c#&lt; %%&gt;打印您的值