我遇到过一个我遇到的最奇怪的问题。这很荒谬。
服务器端注释作为LiteralControl添加到原始容器控件。我知道这听起来真的很疯狂,但这就是我在这里遇到的情况:(
我的环境:Visual Studio 2012,IIS 7,.net frameworks 4.0
我在这里复制我的测试页面:
Default.aspx页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div runat="server" id="divTest">
<%--test--%>
<%--test--%>
</div>
</form>
</body>
</html>
Default.aspx.cs:
using System;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(string.Format("divTest Control count: {0}", divTest.Controls.Count));
}
}
的web.config:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
</system.web>
</configuration>
结果页面显示输出:
divTest Control count: 3
最有趣的部分是,我尝试在另外3个框中运行同一页面(具有完全相同的配置/环境),并且它在其中2个中按预期工作,而另一个显示与我相同的结果。同样,如果我将构建目标框架版本更改为2.0,它会显示预期结果(divTest控件计数:1)。只有在4.0中构建它时才会发生这种情况
知道这种奇怪行为的原因是什么?我在这里错过了什么吗?
由于
本杰明
答案 0 :(得分:0)
额外的LiteralControl不是来自评论,而是围绕它的空白区域。
当从VS.NET 2010切换到2013时,同样的事情发生在我身上(是的,刚刚升级的VS.NET - 网站目标框架没有变化 - 4.0)
我的解决方案是使用FindControl()方法而不是直接通过索引访问ControlCollection。