VB.NET中的C#Webforms用户控件
我有一个现有的VB.NET web项目,需要一些新屏幕(webforms)。由于许多原因,这些新屏幕将用C#开发。经过仔细阅读,这似乎确实是可能的:以及 然而,我做了一个小测试: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应用程序中是不可能的吗?以下是相关代
<%@ 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" ..