【问题标题】:Visual Studio Warning "Content is not allowed" in ASP.NET projectASP.NET 项目中的 Visual Studio 警告“内容不允许”
【发布时间】:2011-01-31 11:31:21
【问题描述】:

我上个月刚开始做程序员,所以会有很多新手问题来自我,敬请期待...我现在正在修改提供的模板(来自 DevExpress)以使用创建新的 Web 表单Visual Studio 2008 上的 ASP.NET 2.0。

虽然该 Web 表单的功能在那里,但我正在删除 90 条警告消息,其中大部分来自提供的模板。

其中一个让我困惑了一段时间是这个: “警告 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>

我自己看不出代码有什么问题,所以请在这里帮帮我。

【问题讨论】:

    标签: asp.net javascript visual-studio-2008 devexpress


    【解决方案1】:

    Chetan Sastry 在他删除的答案中走在了正确的轨道上。您放在 HTML 属性中的脚本不是 HTML 编码的。

    您必须对任何在 HTML 中具有特殊含义的字符进行编码,例如 &lt;&gt;&amp; 和属性值的 " 分隔符:

    <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 &gt; 0) {
                                            for(var i=0; i&lt;count; i++) 
                                                _aspxArrayPush(resourceNames, items[i].text);
                                        }
                                        else
                                            _aspxArrayPush(resourceNames, ddResource.cp_Caption_ResourceNone);
                                        ddResource.SetValue(resourceNames.join(', '));
                                    }"></ClientSideEvents>
                                </dxe:ASPxListBox>
    

    【讨论】:

    • 谢谢Guffa,这行得通!所以我认为如果我将javaScript代码放在单独的文件中会更好?
    • @pstar:是的,如果您在脚本标签或单独的文件中创建函数,则不必对其进行 HTML 编码。
    【解决方案2】:

    尝试更改标签配置

    <ClientSideEvents property="value"></ClientSideEvents>
    

    <ClientSideEvents property="value" />
    

    【讨论】:

    • 谢谢亚当,我认为这个会起作用,而且我认为自己之前尝试过。我不确定,但认为这不会通过验证器?
    猜你喜欢
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多