C# 使用runat=server |类型为'System.Boolean'的对象标记多个属性引发解析器错误 问题

C# 使用runat=server |类型为'System.Boolean'的对象标记多个属性引发解析器错误 问题,c#,asp.net,select,runtime-error,C#,Asp.net,Select,Runtime Error,使用Visual Studio 2010并尝试编写以下代码时: 以下情况下会发生分析器错误: 无法从“multiple”属性的字符串表示形式“multiple”创建类型为“System.Boolean”的对象 代码中需要multiple=multiple值,Eric Hynds的jQuery“jQuery ui multiselect widget”插件也需要multiple=multiple值 据报道,他们回答说: 谢谢你通知我们这个错误。在这一点上,我们只使用最严重的bug来保持高度的向后兼

使用Visual Studio 2010并尝试编写以下代码时:

以下情况下会发生分析器错误:

无法从“multiple”属性的字符串表示形式“multiple”创建类型为“System.Boolean”的对象

代码中需要multiple=multiple值,Eric Hynds的jQuery“jQuery ui multiselect widget”插件也需要multiple=multiple值

据报道,他们回答说:

谢谢你通知我们这个错误。在这一点上,我们只使用最严重的bug来保持高度的向后兼容性。此缺陷不符合该标准,因此在当前产品周期内不会修复。 一个简单的解决方法是使用multiple=true。这应该不会给您带来编译错误

值true在IE中起作用,但在UI中发出警告,表示它不是multiple属性的值。如果使用jQuery操作DOM,解决方法也会失败。

解决方案 IDE的问题是在运行时,ASP.NET渲染引擎在使用某些数据绑定表达式时也会以同样的方式出现口吃。因此,在这种情况下,渲染引擎可能会被欺骗,忽略渲染的“multiple”属性,方法是在multiple属性前面加上meta:,但仍然执行代码,如下所示:

<select runat="server" meta:multiple="multiple" id="prop_typeid" name="property_typeid" class="w290">

在runat=服务器上出现上述类型错误的情况下,可以通过这种方式将前缀“meta:”用于各种属性,以确保呈现引擎处理asp.net页面。

一旦页面完成加载并形成正文,您也可以通过jQuery来实现这一点:

$(window).load(function () {
         $('#chkDC').attr('multiple', 'multiple')

     });

为了避免这种情况,您可以在页面加载中轻松设置多个属性:


@Rory为什么要删除jQuery标记?上述错误发生在ASP.Net中,具体原因是html输出中的jQuery multiselect要求。我假设大多数遇到上述问题的程序员都会从这里来。那么,当你同时问并回答自己的问题时,问题出在哪里?@Rubens我遇到了上述问题,因为我在谷歌上找不到答案,即使是微软的支持也没有解决这个问题——我想我会为任何有上述经历的人发布一个解决方案。
if (db.prop_typeid != null)
{
    ListItem li = prop_typeid.Items.FindByValue(db.prop_typeid.ToString());
    li.Selected = true;
}
$(window).load(function () {
         $('#chkDC').attr('multiple', 'multiple')

     });
yourSelectId.Attributes["multiple"] = "multiple";