0

我对 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>

我的电话:

        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);
}
4

3 回答 3

2

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

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

应该

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

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

我建议您为 firefox ( http://getfirebug.com/ ) 安装 Firefox 和 FireBug - 这将为您提供一个不错的 Javascript 开发人员调试器,并立即向您显示该错误。

于 2013-05-28T18:39:16.170 回答
1

我真的看不出有什么不妥。我要做的是尝试在脚本标签中将 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);
于 2013-05-28T18:41:00.670 回答
0

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

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

并在您的代码上使用此方法;

"selectRow(" + txthidAppId.Value.AddQuatationMark() + ", " + txtAppName.Text.AddQuatationMark() + ")"
于 2013-05-28T18:48:13.170 回答