问题描述
我上个月刚开始做程序员,所以我会有很多新手问题,敬请关注……我现在正在修改提供的模板(来自DevExpress),以便在Visual Studio 2008上使用ASP.NET 2.0创建新的Web表单。
当Web表单的功能存在时,我正在处理九十多条警告消息,其中大多数来自提供的模板。
其中一个让我困惑了一段时间,就是这个: "警告75元素‘ClientSideEvents’的开始标记和结束标记之间不允许有内容。"代码如下:
<dxe:ASPxListBox id="edtMultiResource" runat="server" width="100%"
SelectionMode="CheckColumn" DataSource='<%# ResourceDataSource %>' Border-BorderWidth="0">
<ClientSideEvents SelectedIndexChanged="function(s, e) {
var resourceNames = new Array();
var items = s.GetSelectedItems();
var count = items.length;
if (count > 0) {
for(var i=0; i<count; i++)
_aspxArrayPush(resourceNames, items[i].text);
}
else
_aspxArrayPush(resourceNames, ddResource.cp_Caption_ResourceNone);
ddResource.SetValue(resourceNames.join(', '));
}"></ClientSideEvents>
</dxe:ASPxListBox>
我自己看不出代码有任何错误,所以请在这里帮助我。
推荐答案
切坦·萨斯特里奇在他删除的答案中走上了正确的道路。您放入Html属性中的脚本不是Html编码的。
您必须对在HTML中具有特殊含义的任何字符进行编码,如<
、>
、&
和属性值的"
分隔符:
<dxe:ASPxListBox id="edtMultiResource" runat="server" width="100%"
SelectionMode="CheckColumn" DataSource='<%# ResourceDataSource %>' Border-BorderWidth="0">
<ClientSideEvents SelectedIndexChanged="function(s, e) {
var resourceNames = new Array();
var items = s.GetSelectedItems();
var count = items.length;
if (count > 0) {
for(var i=0; i<count; i++)
_aspxArrayPush(resourceNames, items[i].text);
}
else
_aspxArrayPush(resourceNames, ddResource.cp_Caption_ResourceNone);
ddResource.SetValue(resourceNames.join(', '));
}"></ClientSideEvents>
</dxe:ASPxListBox>