2017-08-17 20 views
1

Webサイトプロジェクトに2つのファイル、Translator2.aspxとTranslator2.aspx.csがあります。私は新しいクラス(Erwin:Translator2)をTranslator2.aspx.csファイルに追加したいと思います。しかし、このようなエラーだった:aspx.csファイルにクラスを追加できません

重大度コード説明プロジェクトファイルの行の抑制状態
エラー「translator2_aspxは」タイプの最初の引数を受け入れる「スイッチ」 なし拡張メソッド「スイッチ」の定義が含まれていません

'translator2_aspx' が見つかりませんでした(あなたがusingディレクティブ またはアセンブリ参照が不足している?)
C:\ Users \ユーザーerwin.suryaドキュメントは、Visual Studioの2017 \ウェブサイトを\ \ \ 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コードです:Translato2クラス:

 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); 
} 

} 

は、私はアーウィンを追加することができない理由の任意のアイデアを持っていますか?クラスを追加する前にすべて正常に動作します。私は何か見落としてますか?

答えて

0

Switchメソッドは、あなたのaspxページを強化するクラスとは異なるクラスにあります。スイッチを何らかのユーティリティメソッドにしたい場合は、完全に別のファイル(Erwin.cs)に新しいクラス(Erwin)を作成し、その中にswitchメソッドを公開し、おそらく静的にする必要があります。私はまた、switchは何も返さないので、あなたがそれを達成しようとしているかどうかはわかりません。

OnClickあなたのボタンのハンドラは、コードの後ろ、つまりTranslator2クラス内にある必要があります。このハンドラの内部では、Erwin.Switch()と呼ぶことができます。

+0

こんにちは、このクラスを現在のaspx.csファイルに追加できませんか? 1つのaspx.csファイルに複数のクラスを作成できると思いましたか? –

+0

クラスErwinからの文字列をfrom、クラスで使用できるようにするには、Translator –

+0

ここにこのクラスを持つことができますが、その理由を尋ねる必要があります。このページでのみ使用されている場合は、ページに機能を追加します。他のページで使用されている場合は、別のドキュメントにあることが理にかなっています。クラスごとに1つの.csファイルが理にかなっています。 – Jonathan

関連する問題