Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
VB.NET中的C#Webforms用户控件_C#_Asp.net_Vb.net_Webforms_Webusercontrol - Fatal编程技术网

VB.NET中的C#Webforms用户控件

VB.NET中的C#Webforms用户控件,c#,asp.net,vb.net,webforms,webusercontrol,C#,Asp.net,Vb.net,Webforms,Webusercontrol,我有一个现有的VB.NET web项目,需要一些新屏幕(webforms)。由于许多原因,这些新屏幕将用C#开发。经过仔细阅读,这似乎确实是可能的:以及 然而,我做了一个小测试: 包含VB WebForms应用程序项目的VB.NET解决方案 在解决方案中添加了一个新的C#ASP.NET项目 在C#汇编中创建web用户控件 在1中的Default.aspx中引用并使用了web用户控件 问题是页面上没有显示用户控件。我错过了什么。这在VB.NET WebForms应用程序中是不可能的吗?以下是相关代

我有一个现有的VB.NET web项目,需要一些新屏幕(webforms)。由于许多原因,这些新屏幕将用C#开发。经过仔细阅读,这似乎确实是可能的:以及

然而,我做了一个小测试:

  • 包含VB WebForms应用程序项目的VB.NET解决方案
  • 在解决方案中添加了一个新的C#ASP.NET项目
  • 在C#汇编中创建web用户控件
  • 在1中的Default.aspx中引用并使用了web用户控件
  • 问题是页面上没有显示用户控件。我错过了什么。这在VB.NET WebForms应用程序中是不可能的吗?以下是相关代码:

    Default.aspx

    <%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.vb" Inherits="waWithCUserControl._Default" %>
    <%@ Register TagPrefix="uac" Namespace="waUserControls" Assembly="waUserControls" %>
    
    <asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
        <uac:UcTakeTest ID="myUserControl" runat="server" />
    </asp:Content>
    

    您需要将C#项目中的标记(仅限于ASCX文件)后期构建到VB Web应用程序项目中,并引用这些ASCX而不是C#项目。听起来很奇怪,但相信我,它是有效的

    1-向C#项目添加生成后事件,将UserControl标记(仅.ASCX文件)复制到Web应用程序项目中的文件夹中;例如,web应用根目录下名为“ExternalUserControls”的文件夹

    (请注意,它们应该具有相同的Inherits属性,即来自C#项目的名称空间和类名。)

    2-确保C#项目被引用(听起来好像已经被引用了)

    3-将控制声明添加到web.config中
    部分:-

      <system.web>
      .
      .
      <pages>
        <controls>
          <add tagPrefix="cc" 
               src="~/ExternalUserControls/MyControl.ascx" 
               tagName="MyControl"   />
          <add .... etc
    
    
    .
    .
    
    关于这件事有很多讨论。。这与asp网站有关,而我对asp应用程序(webforms)感兴趣。虽然我意识到有可能在App_code文件夹中包含CS代码,但当涉及到设计器文件和ascx文件时,这似乎不是一个解决方案。除非我错了?谁会提出这样的要求?@r0管理客户。先生,您是一位学者和绅士。这非常有效。非常感谢,不客气。当有人告诉我(很久以前)这就是解决方案时,你应该看到我脸上的表情。。但它是有效的!对于任何记分的人来说,同样的方法也适用于在C#web表单中包含VB.NET控件。
      <system.web>
      .
      .
      <pages>
        <controls>
          <add tagPrefix="cc" 
               src="~/ExternalUserControls/MyControl.ascx" 
               tagName="MyControl"   />
          <add .... etc
    
    <cc:MyControl id="testControl" runat="server" ..