【问题标题】:Cannot add class to aspx.cs file无法将类添加到 aspx.cs 文件
【发布时间】:2017-08-17 00:26:06
【问题描述】:

我的网站项目中有 2 个文件,Translator2.aspx 和 Translator2.aspx.cs。我想将新类 (Erwin:Translator2) 添加到我的 Translator2.aspx.cs 文件中。然而它是这样的错误:

严重性代码描述项目文件行抑制状态
错误“translator2_aspx”不包含“Switch”的定义 并且没有扩展方法'Switch'接受类型的第一个参数 可以找到“translator2_aspx”(您是否缺少 using 指令 还是程序集参考?)
C:\Users\erwin.surya\Documents\Visual Studio 2017\WebSites\WebSite1\Translator2.aspx 33

这是我的 Translator2.aspx 代码:

<%@ Page Language="C#" Async="true" AutoEventWireup="true" CodeFile="Translator2.aspx.cs" MasterPageFile="~/Site.Master"   Inherits="Translator2" %>

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">


            <div class="form-group">
                    <asp:Label runat="server" AssociatedControlID="English" CssClass="col-md-2 control-label">English</asp:Label>
                    <div class="col-md-10">

                        <asp:TextBox  Height="79px" TextMode="MultiLine" Width="452px"  runat="server" ID="English" CssClass="form-control" />

                    </div>      </div>  



                    <div class="col-md-offset-2 col-md-10">
                        <asp:Button runat="server" OnClick="Submit"  Height="39px" Width="100px" Text="Translate" CssClass="btn btn-default" />
                    </div>

                    <div class="col-md-offset-2 col-md-10">
                        <asp:Button runat="server" OnClick="Switch" Height="39px" Width="100px" Text="Switch" CssClass="btn btn-default" />
                    </div>


<br /><br /><br />
           <div class="form-group">
                    <asp:Label runat="server" AssociatedControlID="Japanese" CssClass="col-md-2 control-label">Japanese</asp:Label>
                    <div class="col-md-10">
                        <asp:TextBox Height="79px" TextMode="MultiLine" Width="452px"   runat="server" ID="Japanese" CssClass="form-control" />

                    </div></div> 
<br /><br />
            <asp:PlaceHolder runat="server" ID="ErrorMessage" Visible="false">
                    <p class="text-danger">
                        <asp:Literal runat="server" ID="FailureText" />
                    </p>
                </asp:PlaceHolder>
</asp:Content>

这是我的 Translator2.aspx.cs 代码:

     partial class Translator2 : Page

{
    public async void Submit(object sender, EventArgs e)
{



    string key = "92fcf1387f844a8";
    var authTokenSource = new AzureAuthToken(key.Trim());
    string authToken;
    try
    {
        authToken = await authTokenSource.GetAccessTokenAsync();
    }

    catch (HttpRequestException)
    {
        if (authTokenSource.RequestStatusCode == HttpStatusCode.Unauthorized)
        {
            Console.WriteLine("Request to token service is not authorized (401). Check that the Azure subscription key is valid.");
            return;
        }
        if (authTokenSource.RequestStatusCode == HttpStatusCode.Forbidden)
        {
            Console.WriteLine("Request to token service is not authorized (403). For accounts in the free-tier, check that the account quota is not exceeded.");
            return;
        }
        throw;
    }


    string output = "";
    string text = English.Text;

    string uri = "https://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + HttpUtility.UrlEncode(text) + "&from=" + "en" + "&to=" + "ja";
    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
    httpWebRequest.Headers.Add("Authorization", authToken);
    using (WebResponse response = httpWebRequest.GetResponse())
    using (Stream stream = response.GetResponseStream())
    {
        DataContractSerializer dcs = new DataContractSerializer(Type.GetType("System.String"));
        string translation = (string)dcs.ReadObject(stream);
        Console.WriteLine("Translation for source text '{0}' from {1} to {2} is", text, "en", "ja");
        Console.WriteLine(translation);
        output = translation;
    }
    Japanese.Text = output;

}

class Erwin : Translator2
{
    string from, to;
    public void SwapStrings(string s1, string s2)

{

    string temp = s1;
    s1 = s2;
    s2 = temp;



    from = s1;
    to = s2;

    testing.Text = from;
    testing1.Text = to;

}

protected void Switch(object sender, EventArgs e)
{
    string str1 = testing.Text;
    string str2 = testing1.Text;
    System.Console.WriteLine("Inside Main, before swapping: {0} {1}", str1, str2);

    SwapStrings(str1, str2);
}

}

你知道为什么我不能添加 Erwin:Translato2 类吗?在我添加课程之前一切正常。我错过了什么吗?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    Switch 方法与支持您的 aspx 页面的类位于不同的类中。如果您希望 switch 成为某种实用方法,您应该在一个完全独立的文件 (Erwin.cs) 中创建一个新类,可能是 Erwin,并在其中有一个 switch 方法,该方法是公共的并且可能是静态的。我还注意到switch 没有返回任何内容,所以不确定你想用它来完成什么。

    按钮的OnClick 处理程序应该在后面的代码中——即在Translator2 类中。在这个处理程序中,你可以调用Erwin.Switch()

    【讨论】:

    • 嗨,我不能把这个类添加到当前的 aspx.cs 文件中吗?我以为我们可以在一个 aspx.cs 文件中创建多个类?
    • 我想使用 Erwin 类的 from,to 字符串,以便能够在 Translator 类中使用它
    • 可以在这里有这个课程,但你应该问为什么。如果它只被这个页面使用,把它的功能放在页面中。如果它被其他页面使用,则放在单独的文档中是有意义的。你会发现每个类一个 .cs 文件是有意义的。
    • 你可以这样做,但你必须公开类和属性。
    • 嗨乔纳森,它只在这个页面中使用(提交和切换按钮在同一个页面)。所以我需要公开课程和属性吗?你有任何文件谈论这个吗?我不知道该怎么做。如果您有我可以参考的链接,请告诉我。我以为我已经创建了 Erwin : translate2 类?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多