ASP.NET引号字符编码在设置控件的属性时会导致问题

时间:2010-12-10 17:09:27

标签: c# asp.net character-encoding rendering

我有一个ASP.NET Web应用程序,在某些时候我这样做:

mycontrol.stringparameterforjscript = "document.getElementById('" + myotherparam + "').value = 'Hello'";

问题是这件事不起作用。 正如您所看到的,这会在某些标记的某些情况下设置javascript。当页面被重新编译时,问题是我的参数看起来像这样:

<textarea onfocus="document.getElementById(&#39;myvalue&#39;).value = &#39;Hello&#39;"></textarea>

我必须确切地说,我正在尝试设置的这个文本框位于ListView的InsertItemTemplate中,并且初始化并不容易。出于这个原因,我插入了我在文本框的load事件处理程序中看到的初始化代码。我可以说一件事:如果这段代码引用了一个位于页面中的文本框,我从页面的load事件处理程序中调用了这段代码,这样就行了。但我不知道在这种特殊情况下该怎么做。

我也在考虑创建一个网络控件来处理这样的问题。我真的不知道在这种情况下最佳做法是什么。

2 个答案:

答案 0 :(得分:1)

我认为您可能需要在分配中的两个字符串文字中使用@,并删除斜杠:

mycontrol.stringparameterforjscript = @"document.getElementById('" + myotherparam + @"').value = 'Hello'";

修改

我是怎么做到的:

在.aspx:

<asp:Textbox ID="tbTest" runat="server" TextMode="MultiLine" />

在代码中:

protected void Page_Load(object sender, EventArgs e)
{
    string myotherparam = "paramval";
    tbTest.Attributes.Add("onfocus", @"document.getElementById('" + myotherparam + @"').value = 'Hello'");
}

结果输出:

<textarea name="tbTest" rows="2" cols="20" id="tbTest" onfocus="document.getElementById('paramval').value = 'Hello'"></textarea>

答案 1 :(得分:0)

好的,我终于成功了。 HTML Encoded strings recognized by the javascript engine, how's it possible? 正如您将看到的,在发生的事情中没有什么可担心的。