为什么服务器控件放在Content标签内时会加下划线?

时间:2011-10-13 10:06:34

标签: asp.net asp.net-2.0

我有一个包含Div的Web内容表单和各种服务器控件,如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>

4 个答案:

答案 0 :(得分:4)

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

我关闭了Visual Studio(对于会影响IDE的更改总是很好的想法),删除文件然后重新打开项目。警告消失了。

我在以下网址找到了对此解决方案的引用: http://forums.asp.net/t/1205528.aspx http://blogs.msdn.com/mikhailarkhipov/archive/2005/04/21/410557.aspx

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

我不知道为什么会发生这种情况,但我知道网络环境中发生了一些有趣的域名配置文件。

答案 1 :(得分:3)

您收到此错误是因为table正在服务器上运行,但trtd元素不是。在表元素上指定runat="server"时,它也期望子元素也在服务器上运行。

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

  1. 从表格声明中删除runat="server";
  2. 将DropDownList(s)放在表格外
  3. 尝试以下两个选项之一,看看它是否解决了问题。

    修改

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

答案 2 :(得分:1)

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

  

C:\ Users \用户名\应用程序数据\漫游\微软\ VisualStudio的\ 10.0 \ ReflectedSchemas

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

答案 3 :(得分:0)

您说"when I view the HTML source, the Server controls are red underlined",但HTML源代码不能包含DropDownList等元素,因为这是生成为HTML Select tag的ASP.NET控件。考虑到使用模式清理的常见解决方案没有帮助你或许在另一个地方出现问题......我将尝试假设你使用一些不了解ASP.NET的第三方编辑器打开ASPX / ASCX文件本身控制,我是对的吗?