【发布时间】:2013-02-15 16:01:36
【问题描述】:
我有一个普通的.html 页面,其中有一个hiddenField 和一个对External.js 的引用。由于我使用ASP.NET 实现,服务器端将首先执行。但是,我需要在服务器代码执行之前在External.js 中执行一个函数。该解决方案可通过以下代码获得:
*在 .aspx *
<script src="External.js" type="text/javascript"></script>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />`
在 .aspx.vb 中
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
If Not Page.IsPostBack Then
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "register", "MyFunction();", True)
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
当我使用.aspx 页面时,代码可以完美运行。显然,我不能在普通的.html 页面中使用任何ASP.NET 服务器控件。所以在.html 页面中使用<asp:ScriptManager> 将不起作用。我怎样才能在.html 页面中但做同样的事情。 .html page 中应该定义什么以及如何从后面的代码中调用该函数,请记住我不能使用任何 <asp:> 控件。
好的,所以我想要做的是我的External.js 具有函数populateHidden(),它基本上为我的hiddenField 设置了一个值。
function populateHidden()
{
document.getElementByID('Hidden').value = "abcdefg";
}
我还有另一个函数PassData(),它基本上将ajax request 初始化到服务器,以将Hidden 的值传递给后面的代码(使用webMethod)。问题是我希望首先执行populateHidden(),以便passData() 将abcdefg(在执行populateHidden() 之后)传递给后面的代码以将值存储在数据库中。所以目前我运行这两个功能的方式如下。
在.html中
<body onload="PassData()">
在代码隐藏中
尝试在Page_Load 上执行populateHidden();,因为服务器端首先执行。
【问题讨论】:
-
.html 文件没有代码,因为它们只是 html。在服务器在 asp.net 中呈现页面之前,您无法执行客户端代码,因为客户端还没有收到生成的 html。你能举一个更具体的例子来说明你想要完成的事情吗?
-
你写:“但是,在服务器代码执行之前,我需要在
External.js中执行一个函数。”纯 HTML 代码没有服务器执行,所以我不清楚您要做什么。与其用 ASP.NET 来表达东西,不如说你想要做什么,比如:“我希望 javascript 在页面呈现之前在我的 HTML 中插入一个图像标签”或类似的东西。您所有的 ASP.NET 比较都使问题感到困惑,因为这不是 ASP.NET 问题。 -
@Andorbal 我更新了我的帖子
-
HTML 文件上没有 Page_Load。如果您谈论的是 ASPX 页面,那么为什么不直接渲染 ?
-
@Andorbal 我知道
HTML文件中没有Page_Load,我确实在帖子的代码隐藏部分中提到了它。我无法通过PassData()传递数据,因为Hidden不是静态的,而是变化的。所以我需要先执行populateHidden(),然后再执行passData()。
标签: javascript asp.net vb.net