2017-10-20 49 views
0

新鲜VS2017网站项目有一个Default.aspx这种方式定义。一个aspx,一个VB和一个C的两个代码隐藏文件#

<%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %> 

我有一个Default.aspx.vb文件这样规定的:

Partial Public Class _Default : Inherits Page 

    Public Function Teapot() As Boolean 

     Return True 

    End Function 

End Class 

和Default.aspx.cs文件中像这样:

public partial class _Default : System.Web.UI.Page 
{ 
    protected override void OnPreInit(EventArgs e) 
    { 
     base.OnPreInit(e); // There is a breakpoint on this line 

     Teapot();   // Error: The name 'Teapot' does not exist 
             in the current context 
    } 
} 

该网站确实运行,尽管设计时使用Teapot()的错误,并且断点被标记为The breakpoint will not currently be hit.这就好像C#文件的内容没有被包含在项目中,尽管使用了部分类并且包含在web.config中如下:

<system.codedom> 
<compilers> 
    <compiler language="c#;cs;csharp" extension=".cs" 
    type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
    warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/> 
    <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" 
    type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
    warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/> 
</compilers></system.codedom> 

我怎样才能获得C#和VB两个文件的内容包含在_Default页面类?

+2

您不能将C#和VB部分类组合在一起 - 它们使用不同的编译器。 – Dai

+0

我知道,但既然他们都编译到MSIL,我想也许他们可以在这个阶段加入。 – davecove

+0

好吧,使用Ujjwal在接受的答案中指出的文章中描述的App_Code的两个子文件夹,您可以用一种语言编写一个类,该语言可以从用另一种语言编写的_Default类中调用(全部在相同网络项目)。不同于两种语言的部分类,但非常接近。 – davecove

回答

3

您不能在同一个项目中混用vb和c# - 如果您在Visual Studio中注意到项目文件是.vbproj或.csproj。你可以在一个解决方案 - 在vb中有1个程序,在c#中有1个。

看起来根据这一点,你有可能在两者App_Code目录中的Web项目中使用它们,如:

http://pietschsoft.com/post/2006/03/30/ASPNET-20-Use-VBNET-and-C-within-the-App_Code-folder.aspx

但你可以使用用户控件,这将显示您的数据。如果您默认使用CS,则可以从您的.VB代码中获取后端数据,并将它们显示在用户控件中。否则,您可以使用Ajax获取数据,并使用HTML显示这些数据和事件。 我希望通过这种方式,您可以显示来自.vb和.cs文件的所有数据和事件。

+0

好的,使用App_Code的两个子文件夹,您仍然无法在语言之间拆分部分类,但可以使用一种语言定义助手类,该语言可以从用另一种语言编写的_Default类中调用。 – davecove

+0

“你不能在同一个项目中混用vb和c# - 如果你在visual studio中注意到项目文件是.vbproj或.csproj。” - 此规则不适用于“Visual Studio网站”(尤其是那些使用旧版ASP.NET 2.0(2005-2008)网站模型和在运行时编译的App_Code目录,而不是设计时,** **意味着你可以在同一个项目中混合使用C#和VB.NET。 – Dai

相关问题