我在添加到背后代码中的某些JavaScript时遇到了麻烦。我要在这里实现的目标是在页面加载上执行另一次回发。现在,您可能会发现这很奇怪,但是有办法使我疯狂。

在我的ASP.Net向导中,我有一个文本框,其中包含从另一步骤填充的日期。然后,该日期用于用财务信息填充其他3个控件。这3个其他控件必须根据此步骤的负载进行填充。现在,我尝试仅在page_load上执行此操作,但是由于某些控件不存在或日期不在文本框中,因此此操作不起作用。我也尝试在page render方法上执行此操作,但是由于相同的原因,此操作也不起作用。

因此,我不得不使用JavaScript执行两次回发,但这会引起各种问题。

这是Page_Load的代码:

 Dim validateFinancial as String = "<script language='javascript'>window.onload = function() ( ValidateFinancialDate() { __doPostBack('<%= UpdatePanel2.ClientID %>'); return false; })</script>"
 Page.ClientScript.RegisterStartUp(Me.GetType(), "MyScript", validateFinancial, false)


它没有触发,在浏览器的左下角的javascript错误框中,它显示缺少“;”。如果我删除了javascript代码,并简单地将其添加到带有字符串中函数名称的标记中,它将正常工作,但是在发布到网络服务器时,这会导致AJAX控件在整个页面上失败。

请问有没有让它起作用的方法?

最佳答案

你的问题是

<%= UpdatePanel2.ClientID %>


将不会被解释。在您希望Javascript回发时,ASP已经完成了页面渲染。您必须找到另一种传递UpdatePanel2.ClientID值的方法。

10-05 20:47
查看更多