2010-04-28 37 views
0

我想将数据传递到ID传递数据给JavaScript在页面加载

<script language="javascript" src="/foo.aspx?id=1"></script> 

我有一个aspx页面的代码。

在代码执行之前,数据应该在加载时传递。

我该怎么做?

+0

你到底在做什么,通过使src属性变为动态? – azamsharp 2010-04-29 01:11:31

+0

我认为有一个服务器根据URL参数发出不同的javascript,并且直到运行时才知道它们应该是什么。 – egrunin 2010-04-29 12:12:49

回答

2

我已经变得越来越更不愿意在.aspx文件中放入<%%,这主要是因为你可能陷入可怕的结,试图逃避各种引用。

这里做的另一种方式:

<asp:Literal id="myscript" runat="server"/> 

然后在服务器端,当你处理Page_Load()

int theID = 42; 
myscript.Text = string.Format("<script type=\"text/javascript\" " + 
      " src=\"/foo.aspx?id={0})\"></script>", theID); 

编辑:改写在C#:)

+0

我喜欢这个.... – DarthVader 2010-04-29 01:53:50

+0

这是一个很好的解决方法,我用它来控制数据绑定,其中链接的点击功能依赖于它的id。处理注入整个JavaScript的更好的方法是用'Page.ClientScript.RegisterClientScriptBlock'完成http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerclientscriptblock.aspx但是,如果你需要在将来对JavaScript进行代码更改时,必须重新编译整个代码库,而不是在Web表单中进行更改并移动'<%= %>'标签。 – 2010-04-30 12:36:46

+1

@Jim Schubert:我同意,当然,尽管我认为你的意思是http://msdn.microsoft.com/en-us/library/btf44dc9.aspx。另一方面,有时您需要控制脚本的放置位置。 – egrunin 2010-04-30 16:48:09

3

只是在你的代码隐藏文件属性,如

protected string FooId 
{ 
    get { return ... } 
} 

然后在ASPX文件,像这样引用它:

<script language="javascript" src="/foo.aspx?id=<%= FooId %>"></script> 
2

ASP.NET有语法<%= %>这是相当于Response.Write。

然后,您可以存储您的ID中的属性,如: protected int Id {get;set;},并将其设置在Page_Load中

那么,你会做这样的:

<script language="javascript" src="/foo.aspx?id=<%= Id %>"></script>