ASP.NET引号字符编码在设置控件的属性时会导致问题
我有一个ASP.NET Web应用程序,在某些时候我这样做:
mycontrol.stringparameterforjscript = "document.getElementById('" + myotherparam + "').value = 'Hello'";
问题是这件事不起作用。 正如您所看到的,这在某些标签的某些事件中设置了javascript。 当页面被重新编译时,问题是我的参数看起来像这样:
我必须确切地说,我正在尝试设置的这个文本框位于ListView的InsertItemTemplate中,并且初始化并不容易。 出于这个原因,我插入了我在文本框的load事件处理程序中看到的初始化代码。 我可以说一件事:如果这段代码引用了一个位于页面中的文本框,我从页面的load事件处理程序中调用了这段代码,这样就可以了。 但我不知道在这种特殊情况下该怎么做。
我也在考虑创建一个webcantrol来处理这个问题的可能性。 我真的不知道在这种情况下最好的做法是什么。
我认为您可能需要在分配中的两个字符串文字中使用@,并删除斜杠:
mycontrol.stringparameterforjscript = @"document.getElementById('" + myotherparam + @"').value = 'Hello'";
编辑
我是怎么做到的
在.aspx上:
在代码中:
protected void Page_Load(object sender, EventArgs e) { string myotherparam = "paramval"; tbTest.Attributes.Add("onfocus", @"document.getElementById('" + myotherparam + @"').value = 'Hello'"); }
结果输出:
好的,我终于成功了。 HTML编码的字符串由javascript引擎识别,怎么可能? 正如您将看到的,在发生的事情中没有什么可担心的。