gpt4 book ai didi

c# - Windows 7 IIS 7.5 具有 System.ComponentModel.Browsable 属性的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:32 25 4
gpt4 key购买 nike

我只是想看看其他人是否也有同样的行为。

我有一个名为 GridViewEx 的类,它扩展了 GridView。该类中的一个属性将 Browsable(true) 作为注释。这允许(嗯,至少在 IIS 7.5 之前)在标记中设置属性。但在 Windows 7 IIS 7.5 上,它给出了解析器错误。请注意,在装有 IIS 7.5 的 Win 2008 服务器上,该应用程序运行良好。

所以我想知道是否是 Win7 中的某些 IIS 7.5 设置搞砸了。

重现步骤

a) 创建新的 ASP.Net 应用程序,框架版本使用 4.0

b) 创建一个名为 GridViewEx 的新类(get/set 只是伪代码,并不重要):

namespace GUI.Controls
{
public class GridViewEx : GridView
{
[Browsable(true)]
[Description("my test")]
public int VirtualItemCount
{
get
{
return 42;
}
set
{
int x = value;
int y = x + x;
}
}

}
}

c) 在 Default.aspx 中,注册标记前缀(将 WebApplication1 更改为您对项目的命名)。此行应位于 Page 指令的正下方。

<%@ Register TagPrefix="common" Namespace="GUI.Controls" Assembly="WebApplication1" %>

d) 在 Default.aspx 中,将此添加到您的内容中:

<common:GridViewEx runat="server" ID="gv" VirtualItemCount="-1">

</common:GridViewEx>

如果我在 IIS 7.0 或更早版本上运行此应用程序,我不会收到任何错误。但是,在 Win 7 IIS 7.5 上,它给出以下错误:

Parser Error 
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: The 'VirtualItemCount' property cannot be set declaratively.

我不明白为什么我在 Win 7 IIS 7.5 上会收到错误消息,但在较早的 IIS 版本上却不会,而在 Win 2008 服务器上的 IIS 7.5 上却不会。有什么想法吗?

最佳答案

好的,我找到了一个 hack 来完成这项工作。将这些属性添加到 VirtualItemCount:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[EditorBrowsable(EditorBrowsableState.Always)]
[Bindable(true)]

现在我不再收到解析器错误。我不明白为什么我必须添加这些才能在我的 Win 7 机器上工作,但是在我测试的服务器上不需要这些额外的属性(我的 Win 7 机器和服务器都在 IIS 7.5 上) .我想这仍然是个谜。

非常感谢回答this question的人,因为它引导我朝着正确的方向前进。

关于c# - Windows 7 IIS 7.5 具有 System.ComponentModel.Browsable 属性的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14899899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com