如何从页面后面的代码传递值到javascript?

时间:2011-02-09 13:40:06

标签: asp.net

我有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']);">

这些方法的论点可以在一段时间后改变。

我希望在加载页面时传递参数。

我已经尝试了很多方法将参数从代码隐藏页面传递到此页面,但它无效。 请让我知道一个更好的解决方案。

由于

5 个答案:

答案 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:

MSDN - Javascript and ASP.NET 2.0

MSDN - ClientScript.RegisterStartupScript

答案 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;打印您的值