从.NET代码隐藏将参数作为文本传递给JavaScript函数

时间:2010-03-23 14:33:28

标签: javascript asp.net vb.net code-behind registerstartupscript

基本上,我有一个从父窗口在新窗口中打开的gridview。它有一堆带有视图按钮的记录,用于查看每条记录的详细信息(保留在同一个新打开的窗口中)。我在父窗口中有一个日历,它接受一个Date查询字符串参数来设置页面加载时日历上的当前日期。我只是想在父窗口中刷新日历以匹配新打开的窗口中的标签日期。

以下所有代码都在新打开的窗口中。下面的.Net代码隐藏指的是单击该视图按钮并填充所有内容的时间。最后,我调用js刷新父窗口并将LabelScheduleDate的值作为querystring参数传递。现在标签在代码隐藏中以'03 / 25/2010'形式出现,但是当我将它传递给js时,它在最后的查询字符串中以'0.00005970149253731343'形式出现。我不确定是什么让价值发生变化,我想把它作为只是文字传递给我。我是否需要将其作为字符串对象传递?我试过,但我不认为我做得对。

感谢。

JavaScript函数

function RefreshParent(inputDate) {
   window.opener.location = window.opener.location + "?Date=" + inputDate;
}

.NET Code-Behind

Protected Sub RadGridOnlineRequests_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGridOnlineRequests.ItemCommand

   If e.CommandName = "ViewOnlineRequest" Then

      ' populates LabelScheduleDate among other controls values
      ScriptManager.RegisterStartupScript( _
         Me, Me.GetType(), "clientScript", "RefreshParent(" & LabelScheduleDate.Text &  ");", True)

   End If

End Sub

1 个答案:

答案 0 :(得分:1)

您只需要确保渲染的脚本最终会在文本周围加上引号:

RefreshParent('" & LabelScheduleDate.Text &  "');

如果LabelScheduleDate.Text的值为“03/25/2010”,则会解析为

RefreshParent('03/25/2010');

...而你的代码已经解决了

RefreshParent(03/25/2010);

...这意味着RefreshParent获得3除以25除以2010.