【问题标题】:Pass parameter as text to JavaScript function from .NET code-behind将参数作为文本从 .NET 代码隐藏传递给 JavaScript 函数
【发布时间】:2012-05-12 10:42:25
【问题描述】:

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

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

谢谢。

JavaScript 函数

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

.NET 代码隐藏

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

【问题讨论】:

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


    【解决方案1】:

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

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

    如果LabelScheduleDate.Text 的值是“03/25/2010”,这将解析为

    RefreshParent('03/25/2010');
    

    ...而您的代码会解析为

    RefreshParent(03/25/2010);
    

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

    【讨论】:

    • 哈,完全忽略了这一点。谢谢!
    猜你喜欢
    • 2010-10-21
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2018-09-02
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多