Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET自定义控件-未知的服务器标记_C#_Asp.net_Custom Controls - Fatal编程技术网

C# ASP.NET自定义控件-未知的服务器标记

C# ASP.NET自定义控件-未知的服务器标记,c#,asp.net,custom-controls,C#,Asp.net,Custom Controls,我创建了一个从文本控件继承的自定义控件。当我尝试在页面上使用我的控件时,会抛出一个解析错误。我已将此添加到我的web.config <configuration> <system.web> <pages> <controls> <add tagPrefix="one" namespace="myApplication.Controls"/> </controls>

我创建了一个从文本控件继承的自定义控件。当我尝试在页面上使用我的控件时,会抛出一个解析错误。我已将此添加到我的web.config

<configuration>
  <system.web>
    <pages>
      <controls>
        <add tagPrefix="one" namespace="myApplication.Controls"/>
      </controls>
    </pages>
  </system.web>
</configuration>

在添加名称空间时,我发现我还需要程序集。如果您的程序集也是
myApplication
,请在web.config中执行此操作:

<add tagPrefix="one" namespace="myApplication.Controls" assembly="myApplication"/>


然后,只是清理和重建,它应该都工作。一旦它在web.config中,您就不需要将其添加到页面中,除非您在同一目录中的控件中使用它,然后您将需要在web表单顶部的引用。但是,我建议不要在与用户控件相同的目录中使用自定义服务器控件。

如果我理解正确,您的控件是否在同一个项目中

尝试在页面标记中使用以下内容注册控件:

<%@ Register Src="~/controls/foo.ascx" TagName="foo" TagPrefix="uc" %>

使用
可以将控件包含到标记中。
如果这不起作用,您的控件可能无法编译。注释掉不必要的内容,然后再试一次。

我在发布ASP.NET Web表单应用程序时也遇到了这个问题。即使将文件夹复制并粘贴到服务器的IIS中,而不发布它,使用自定义控件/用户控件的页面上也会系统地出现类似问题

我在web.config和我的开发机器上正确注册了控件,一切正常。我认为注册过程还可以

若要修复发布/复制和过去部署过程中的问题,您应该在使用它们的每个页面(.aspx)上重新注册所有用户控件的命名空间和程序集:

<%@ Register TagPrefix="mycompany" Namespace="MyCompany.Web.Forms.Controls" Assembly="MyCompany.Web" %>
<%@ Register TagPrefix="mycomapny" Namespace="MyCompany.Web.Forms.Controls.ValidatorComponents"  Assembly="MyCompany.Web" %>

请注意,自定义控件或用户控件的思维方式是相同的。这个问题甚至发生在VS 2012,但仍然是.NET 4.0。当ASP.NET皮肤引用此类控件时,也需要此过程。

我收到了作为项目一部分的用户控件的“未知服务器标记”错误。没有外部组件@citronas提到“如果这不起作用,您的控件可能无法编译”,这也是中列出的最可能的原因

虽然我的控制代码在编译时没有出现错误,但事实证明我忽略了一些警告。我的警告是关于我的控制文件夹中引用另一个丢失文件的资源文件。一旦我解决了警告问题,那么控件就正确编译了,我可以使用该控件,只需一个寄存器指令,而不需要修改web.config,如下所示:

<%@ Register TagPrefix="myPrefix" TagName="myControl" Src="~/controls/mySourceFile.ascx" %>

<myPrefix:myControl runat="server"></myPrefix:myControl>

在我的例子中,应用程序是在本地模式下运行的,发布时从用户控件标记中得到了相同的错误


在评论用户控件标记时,注意到另一个位置存在路径错误。在解决了另一个问题并取消了对用户控件标记的注释后,它成功了。显示的错误似乎不相关

我们需要您正在编写的使用实际控件=)的代码ascx页面和代码在外部程序集中?这太奇怪了,它需要程序集,即使控件在应用程序中。感谢您的帮助。
一旦它进入您的web.config,您就不需要将其添加到您的页面
对我来说,这就是它无法工作的原因。。thanksIt不是我试图在页面上使用的web控件。它是从System.Web.UI.WebControl.Literal类继承的自定义控件。
<%@ Register Src="~/controls/foo.ascx" TagName="foo" TagPrefix="uc" %>
<%@ Register TagPrefix="mycompany" Namespace="MyCompany.Web.Forms.Controls" Assembly="MyCompany.Web" %>
<%@ Register TagPrefix="mycomapny" Namespace="MyCompany.Web.Forms.Controls.ValidatorComponents"  Assembly="MyCompany.Web" %>
<%@ Register TagPrefix="myPrefix" TagName="myControl" Src="~/controls/mySourceFile.ascx" %>

<myPrefix:myControl runat="server"></myPrefix:myControl>