(. net)背后c#代码调用JavaScript函数的问题

本文关键字:JavaScript 函数 问题 调用 代码 net 背后 | 更新日期: 2023-09-27 18:15:50

我对c#和javascript在同一个应用程序中的结合相当陌生。我想我一定错过了让他们一起工作的重要部分。从我的代码后面调用我的javascript函数不会导致我期望的结果,但也不会导致错误。什么也没发生。我正在使用Visual Studio 2010进行开发,如果有内置的JS调试器,我不知道在哪里可以找到它——不能一步一步地完成会让事情变得更加糟糕。

在我的。aspx(两个"FieldName"值来自代码的另一部分):

<script language ="javascript">
    var idSelection;
    var nameSelection;
    function selectRow(idItem, nameItem) {
        idSelection = idItem;
        nameSelection = nameItem;
        alert(idSelection + " " + nameSelection);
        var targetIdValue;
        var targetForm = window.opener.document.forms(0);
        eval("targetForm." + targetIdFieldName + ".value = '" + idSelection + "';");
        eval("targetForm." + targetNameFieldName + ".value = '" + nameSelection + "';");
        window.close();
    }
</script>

And my call:

        protected void AppGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
        {
                txthidAppId = (HtmlInputHidden)Session["hidAppId_rvte"];
                txtAppName = (TextBox)Session["txtAppName_rvte"];
                txthidAppId.Value = selectedApp.Id;
                txtAppName.Text = selectedApp.Name;
                Page.ClientScript.RegisterStartupScript(GetType(), "SelectApp", "selectRow(" + txthidAppId.Value + ", " + txtAppName.Text + ")", true);
}

(. net)背后c#代码调用JavaScript函数的问题

不完全确定您想要完成什么,但是,您的Javascript中有一些语法问题。

selectRow(" + txthidAppId。值+ "," + txtAppName。文本+ ")

应为

selectRow(" + txthidAppId。值+ "," + txtAppName。Text + "')

注意txtAppName.Text值周围的单引号'。你正在发送字符串,所以Javascript需要这样传递它们,否则它将它们视为对象。

我建议你安装Firefox和FireBug Firefox (http://getfirebug.com/) -这将给你一个很好的Javascript开发调试器,并会显示你的错误。

我不觉得有什么不对。我要做的是尝试在script标签中将language=javascript更改为type="text/javascript"。

同样,我会修改

Page.ClientScript.RegisterStartupScript(GetType(), "SelectApp", "selectRow(" + txthidAppId.Value + ", " + txtAppName.Text + ")", true);

Page.ClientScript.RegisterStartupScript(Page.GetType(), "SelectApp", "selectRow(" + txthidAppId.Value + ", " + txtAppName.Text + ")", true);

必须将QuatationMarks添加到字符串参数中。我为此写了一个扩展方法;

    public static string AddQuatationMark(this string value)
    {
        string retStr = "";
        retStr = "" + "'" + value + "'" + "";
        return retStr;
    }

在你的代码中使用这个方法;

"selectRow(" + txthidAppId.Value.AddQuatationMark() + ", " + txtAppName.Text.AddQuatationMark() + ")"