我对同一应用程序中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);
}
答案 0 :(得分:2)
不完全确定您要完成的任务,但是,您的Javascript中存在一些语法问题。
selectRow(“+ txthidAppId.Value +”,“+ txtAppName.Text +”)
应该是
selectRow(“+ txthidAppId.Value +”,“”+ txtAppName.Text +“')
请注意'
值周围的单引号txtAppName.Text
。你正在发送字符串,所以Javascript需要它们这样传递,否则它会将它们视为对象。
我建议您为firefox(http://getfirebug.com/)安装Firefox和FireBug - 这将为您提供一个很好的Javascript开发人员调试器,并立即向您显示该错误。
答案 1 :(得分: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);
答案 2 :(得分:0)
您必须将QuatationMark添加到字符串参数中。我为此写了一个扩展方法;
public static string AddQuatationMark(this string value)
{
string retStr = "";
retStr = "" + "'" + value + "'" + "";
return retStr;
}
在代码上使用此方法;
"selectRow(" + txthidAppId.Value.AddQuatationMark() + ", " + txtAppName.Text.AddQuatationMark() + ")"