4

もちろん、Visual Studio の AddResource ボタンを使用する以外で。

フォームと画像ファイルを一緒に送信します。コントローラー アクションでは、 を使用してHttpPostedFileBaseオブジェクトとそのファイル名を取得しますPath.GetFileName()。関数を使用SaveAs()してアプリケーションに画像ファイルを保存するだけでは、「ローカル リソースの読み込みが許可されていません」というエラーが表示されるため、後でテストのためにアクセスすることはできません。

そのため、画像を .resx ファイルに追加し、後でResourceManagerまたは何かを使用して取得したいと考えています。私の質問は、コントローラー アクションにある画像を .resx ファイルに追加するにはどうすればよいですか?

また、アプリケーションで画像ファイルを追加および取得する目的で、これが適切なアプローチであるかどうかも確認する必要があります。

EDITED: OK、.resx を使用して画像を保存することはお勧めできません。元の問題は、画像ファイルを保存できることでしたが、ビューに表示しようとすると、「ローカル リソースの読み込みが許可されていません」というエラーが表示されます。

コントローラーのコードは次のとおりです。

public ActionResult UrunEkle(Urun urun, HttpPostedFileBase image)
{
    Directory.CreateDirectory(Server.MapPath("~/App_Data/Images"));
    var path = Path.Combine(Server.MapPath("~/App_Data/Images"), fileName);
    image.SaveAs(path);  

    urun.ArtUrl = path;

    // other stuff....
}

そして、私の見解では、次のように画像を取得しようとしています:

<img alt="@urun.name" src="@Url.Content(urun.ArtUrl)" />

しかし、Google Chrome を使用すると、「ローカル リソースの読み込みが許可されていません」というメッセージが表示されます。どうすればこれを回避できますか?

4

1 に答える 1

1

イメージを RESX ファイルに追加しようとするのは忘れてください。実行時に変更されるようには設計されていません。

いくつかのコードを投稿してください。最も可能性が高いのは、後で画像を使用するために提供している URL が正しくないことです。おそらく、Web サイトのコンテキスト内の画像への URL ではなく、サーバー上のファイルのパスを返しているためです。

Chrome からのエラー メッセージは、クライアントのローカル ファイル システムからリソースをロードしようとしていることを示しています。

Url.Content は、相対仮想パスを絶対仮想パスに変換し、 ~ で始まる URL を必要とします。現在、画像ファイルへの絶対物理パスを渡していますが、Url.Content はそれを変更せずに返しています。urun.ArtUrl に相対仮想パス (~/App_Data/Images/Untitled.png) が必要です。これは、Server.MapPath に渡した値です。

于 2012-07-08T08:05:56.620 に答える