一个aspx的两个代码隐藏文件,一个VB和一个C#

时间:2017-10-20 19:05:12

标签: c# asp.net .net vb.net

Fresh VS2017网站项目以这种方式定义了Default.aspx。

<%@ 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>

如何获取_Default页面类中包含的C#和VB文件的内容?

2 个答案:

答案 0 :(得分:3)

你不能在同一个项目中混合使用vb和c# - 如果你在visual studio中注意到项目文件是.vbproj或.csproj。你可以在解决方案中 - 在vb中有1个proj,在c#中有1个。

根据这一点,您可以在App_Code目录中的Web项目中使用它们:

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

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

答案 1 :(得分:0)

我不知道是否有人还在阅读此书,但是您可以拥有一个使用VB.NET内联代码并带有C#代码的文件。您的文件定义看起来像

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

您可以将VB代码放在<script language = "VB" runat = "server"></script>分隔符内或<% %>分隔符内同一页的块中,而不用将VB代码放在后面。