2017-09-29 8 views
-1

オブジェクト(URIファイルを含む)のリストをASP.NET MVCのファイルに保存しようとしているため、ページをロードするときに保存されるファイルURIが読み込まれて表示されます。 Windowsフォームで試したところ、完全に動作しますが、MVCで動作させることはできません。ASP.NET MVCのファイルにオブジェクトのリストを保存する方法

参考資料として、Windowsフォームでオブジェクトの一覧をファイルに保存し、ファイルの内容を読み込むために使用しているコードを次に示します。私は、コントローラクラスに同じコードを置くとき

private void Save(List<Uri> list) 
{ 
    BinaryFormatter b = new BinaryFormatter(); 
    FileStream file = File.Create(fileName); 
    b.Serialize(file, list.ToList()); 
    file.Close(); 
} 

private void LoadFile() 
{ 
    try 
    { 
     BinaryFormatter b = new BinaryFormatter(); 
     FileStream file = File.Open(fileName, FileMode.Open); 
     fileList = (List<Uri>)b.Deserialize(file); 
     file.Close(); 
    } 
    catch 
    { 
     MessageBox.Show("Error Loading File!"); 
    } 
} 

、私は次の行でエラーを取得しています:

​​

エラー:

「Controller.File(バイト[]、string) 'は、指定されたコンテキストでは無効なメソッドです。

マイコン名前は "FilesController"ですが、名前が矛盾しているとは思いません。

ご協力いただければ幸いです。 :) ありがとうございました!

+1

「動作しませんでした」を定義します。どのように失敗するのですか? .NETコードからのファイルへの書き込みは、アプリケーションのタイプに関係なく同じです。この場合、すべての例外をキャッチし、例外を無視して、一般的なエラーメッセージを表示することに注意してください。しかし、Webアプリケーションでは、 'MessageBox.Show()'は明らかに何もしません。 – David

+0

私は自分の投稿を編集して、どの行にエラーが出ているのかを指定しました!助けてくれてありがとう! :) – user2950895

+3

'次の行にエラーが表示されます。' <=すでに指摘したように、あなたの質問にエラーを含める必要があります。 Exception Type、Message、Stack Traceを含め、内部の例外に対してこれを繰り返します。 – Igor

答えて

3

'Controller.File(byte[], string)' is a method, which is not valid in the given context

Controllerクラスhas a member called File already。 (エラー状態などの方法。)ですから、あなたのコントローラでこれを行う:

File.Create(fileName); 

Fileと呼ばれるものへの最初の参照は、この行は無効になり、その方法、です。あなたがSystem.IO.Fileオブジェクトを使用したい場合、あなたはそれを指定する必要があります。

System.IO.File.Create(fileName); 

理想的には、このような依存関係ベースの操作は、コントローラには起こりません。しかし、単純化のために、アプリケーションがあまり機能しない場合は、コントローラでこれらを行うことは全く珍しいことではありません。

+0

それは働いた!ただし、次のコメントがあります。 ファイルを保存する場所を指定しないと、MVCプロジェクトはデフォルトでIIS Expressフォルダにファイルを保存し、このアクセス許可を読み書きすることはできませんフォルダ。 したがって、ファイル名を System.IO.File.Create() に指定するのではなく、保存するファイルパスを指定することをお勧めします。 – user2950895

+0

@ user2950895:そうです、理想的には、ファイルを保存する場所を指定するのが理想的です。推測のためにアプリケーションに放置しないでください。一般的なアプローチは、アプリケーションの構成内のファイル名または基本ルートパスを識別し、すべてのファイル操作でそれを使用する方法です。 – David

関連する問題