将Aspx页面从VB转换为CS

时间:2011-11-11 20:20:07

标签: c# asp.net vb.net

我有一个asp.net页面WineCompDefault.aspx,它最初是用VB代码实现的。我现在正试图将代码改为CS。我修改了aspx页面中的page指令,如下所示:

从 -

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="WineCompDefault.aspx.vb" Inherits="WineCompDefault" %>

到 -

<%@ Page Language="C#" AutoEventWireup="false" CodeFile="WineCompDefault.aspx.cs" Inherits="WineCompDefaultCS" %>

WineCompDefault.aspx.vb文件包含以下内容:

Imports Microsoft.VisualBasic
Imports System.Web.UI
Imports MarymonteDAL
Imports System.Data
Imports System.Data.OleDb


Partial Class WineCompDefault
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub btnLogOn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLogOn.Click
        Dim myLabel As Label
        myLabel = Page.FindControl("lblTitle")
        If Not myLabel Is Nothing Then
            lblResults.Text = myLabel.Text
        Else
            lblResults.Text = "Could not find the label control."
        End If
        btnLogOn.Visible = False
    End Sub
End Class

从VB到C#的代码转换器给出了以下内容(除了我将类名更改为WineCompDefaultCS,我也在页面指令中进行了更改,因此我可以在项目中同时使用两个代码)

using Microsoft.VisualBasic;
using System.Web.UI;
using System.Data;
using System.Data.OleDb;


partial class WineCompDefaultCS : System.Web.UI.Page
{


    protected void Page_Load(object sender, System.EventArgs e)
    {
    }

    protected void btnLogOn_Click(object sender, System.EventArgs e)
    {
        Label myLabel = default(Label);
        myLabel = Page.FindControl("lblTitle");
        if ((myLabel != null)) {
            lblResults.Text = myLabel.Text;
        } else {
            lblResults.Text = "Could not find the label control.";
        }
        btnLogOn.Visible = false;
    }

    Public WineCompDefault()
    {
        Load += Page_Load;
    }
}

问题是它说“无法找到公共类型或命名空间”。我不知道有什么不对或丢失。所有人都非常感谢。

(另外,请注意,一旦我确定CS正常工作,我将删除VB文件。这就是为什么我希望此时保留在项目中)

4 个答案:

答案 0 :(得分:1)

您的构造函数不正确。构造函数必须始终与类名(WineCompDefaultCS)匹配。此外,c#区分大小写,public等访问修饰符应为小写。

更改此内容:

Public WineCompDefault()
{
    Load += Page_Load;
}

对此:

public WineCompDefaultCS()
{
    Load += Page_Load;
}

答案 1 :(得分:1)

您重命名了类,但没有重命名构造函数。在C#中,构造函数必须与类名匹配。

WineCompDefault应该是WineCompDefaultCS

答案 2 :(得分:0)

一个老问题 - 但这是我现在能找到的 -

您需要删除该文件并使用Add-&gt; New File(此时选择c#)将其添加回来然后粘贴回aspx(使用lang =“C#”和CodeFile =“WineCompDefault.aspx.cs”) )

我不知道Visual Studio为何或如何知道页面最初转换的方式 - 我无法找到VS存储此信息的位置。

我希望这有帮助!

答案 3 :(得分:-1)

您缺少退货声明