Asp.net 为什么服务器控件放置在内容标记内时会加下划线?

Asp.net 为什么服务器控件放置在内容标记内时会加下划线?,asp.net,asp.net-2.0,Asp.net,Asp.net 2.0,我有一个Web内容表单,其中包含Div和各种服务器控件,如DropDownList。当我运行应用程序时,它运行良好,没有任何错误,但是当我查看HTML源代码时,服务器控件用红色下划线表示。将鼠标置于上方时,例如,DropDownList,将显示工具提示警告: DropDownList is not a known element. This can occur if there is a compilation error in a website. 已编辑 <%@ Page Langu

我有一个Web内容表单,其中包含
Div
和各种服务器控件,如
DropDownList
。当我运行应用程序时,它运行良好,没有任何错误,但是当我查看HTML源代码时,服务器控件用红色下划线表示。将鼠标置于上方时,例如,
DropDownList
,将显示工具提示警告:

DropDownList is not a known element. This can occur if there is a compilation error in a website.
已编辑

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="contentReportSchemesMenu.aspx.cs" Inherits="contentReportMenu" Title="Reports Menu" %>

<asp:Content ID="ContentReportMenu" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div id="divMenu" class="divMenu" runat="server">
        <table id="tblMenuLayout" class="Options" runat="server">
        <tr>
            <td colspan="2" class="Top">Scheme Reports Menu</td>
            <td></td>
        </tr>
            <tr>
                <td class="Left">Report Type</td>
                <td class="Right">
                        &nbsp;<asp:DropDownList ID="ddlReportType" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlReportType_SelectedIndexChanged"></asp:DropDownList>
                </td>
            </tr>        
            <tr>
                <td class="Left">Select District</td>
                <td class="Right">
                        &nbsp;<asp:DropDownList ID="ddlDistrict" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlDistrict_SelectedIndexChanged" Enabled="False"></asp:DropDownList>
                </td>
            </tr>
            <tr>
                <td class="Left">Select Block</td>
                <td class="Right">
                    &nbsp;<asp:DropDownList ID="ddlBlock" runat="server" AutoPostBack="true" Enabled="False" OnSelectedIndexChanged="ddlBlock_SelectedIndexChanged"></asp:DropDownList>
                </td>
            </tr>
            <tr>
                <td colspan="2" style="text-align:center">
                    <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" Enabled="False" />
                    &nbsp;</td>
                <td></td>
            </tr>
        </table>
    </div>
</asp:Content>

方案报告菜单
报告类型
选择地区
选择块

尝试删除架构缓存。要执行此操作,请关闭Visual Studio并删除以下目录中的所有文件:

C:\Users\USERNAME\AppData\Roaming\Microsoft\VisualStudio\10.0\ReflectedSchemas


删除文件后,再次打开Visual Studio,问题应该得到解决。

您收到此错误,因为服务器上正在运行
表,但
tr
td
元素没有运行。在表元素上指定
runat=“server”
时,它希望子元素也在服务器上运行

有两种简单的方法可以验证这一点:

  • 从表声明中删除
    runat=“server”
  • 将下拉列表置于表外
  • 试试这两个选项中的一个,看看它是否能解决问题

    编辑


    确保内容表单上的ContentPlaceholder ID与母版页中相应内容区域的ID匹配。如果这不能解决您的问题,请尝试创建一个新的内容表单,应用上面的建议,并在内容区域中向表单添加一个控件。如果没有错误,那么您就知道问题出在您的标记中。

    快速的谷歌搜索很快找到了解决方案:从Windows XP中的“C:\Documents and Settings[Username]\Application Data\Microsoft\VisualStudio\9.0\ReflectedSchemas”文件夹(或“…\VisualStudio\8.0\…”(如果运行Visual Studio 2005)中删除文件。在Windows 7中,它位于“C:\Users{User Profile}\AppData\Roaming\Microsoft…等”下。还请记住,路径的“VisualStudio”部分将根据安装的版本而有所不同

    我关闭了VisualStudio(对于那些会影响IDE的更改总是一个好主意),删除了文件,然后重新打开了项目。警告消失了

    我在以下位置找到了对此解决方案的引用:

    仅供参考,我在谷歌使用的搜索词是“元素不受支持”


    我不知道为什么会发生这种情况,但我知道在网络环境中发生了一些类似于薄片的域配置文件的事情。

    你说
    “当我查看HTML源代码时,服务器控件带有红色下划线”
    ,但是HTML源代码不能包含像
    DropDownList
    这样的元素,因为这是作为HTML生成的ASP.NET控件。考虑到模式清理的通用解决方案对您没有帮助,也许问题出在另一个地方。。。我将尝试假设您正在使用某个第三方编辑器打开ASPX/ASCX文件本身,该编辑器不知道ASP.NET控件,对吗?

    在我的站点上,类似情况下不会发生这种情况。“你能发布一些html吗?”奥利弗补充道。请参阅原始帖子。我正在Windows XP SP3上使用VS-2005。请尝试以下路径:
    C:\Documents and Settings\USERNAME\Application Data\Microsoft\VisualStudio\8.0\ReflectedSchemas
    。完全按照您所说的做了,但下划线仍然存在。我遵循了您的第一个建议,问题仍然存在。不可能将下拉列表带到表外。我还没有尝试过无表设计。有时需要一分钟才能传播到编辑器。您是否尝试过关闭并重新打开页面,并等待一分钟以使更改到达编辑器?我从表中删除了runat-“server”和Tr,Td,但仍然是相同的下划线。不,我在VS-2005中打开它。