0

以下のような画像タグを生成しました。

<td>
    <img src='@item.SourceAddress' alt="@item.Description"/>
</td>

結果は次のようになります。

<td>
    <img src='C:\Users\leo\Workspace\Team Foundation Server\Sources\HRS\HRS\App_Data\user\Photos\test.jpg' alt="desc"/>
</td>

問題は、空白しか表示されず、画像がまったく表示されないことです (Firefox では代替テキストのみが表示されます)。パスは正しいです。タグ自体を別の html ファイルにコピーしたところimg、画像が鮮明に表示されます。
役立つかもしれない何か: Firefox でソースを開き、画像のソースをクリックすると、次のエラーが発生しました:

プロトコル (c) はどのプログラムにも関連付けられていないため、Firefox はこのアドレスを開く方法を知りません。

ところでひどい英語でごめんなさい。
編集:タイトルを編集しました。今ではもっと理にかなっています!

4

2 に答える 2

1

これは、Razr を介した相対パスではなく、ローカル パス名 (つまり、C: のディレクトリ) を指定したことが原因である可能性があります。Firefox でデバッグを開始すると、コンソール出力がこれを回避することがあります。

次のようなものを試すことができます。

<img src="@Url.Content(Item.SourceAddress)" alt="desc"/>

そして、SourceAddress が次の形式であることを確認します。

~/MyImages/Photos/test.jpg

また、一重引用符に対する二重引用符など、明らかなことをすべて確認する価値があります。

于 2013-02-07T11:55:23.937 に答える
0

ついに何が問題なのかがわかりました!

  • まず、ファイルを保存するために App_Data フォルダーを使用しました。このフォルダーは特別な目的であり、いくつかの特別なデータベース ファイルを格納するために使用され、IIS はこのフォルダーに直接アクセスできません。Image のような別のフォルダーを作成し、そこにファイルを保存する必要がありました。
  • 2 番目の問題は、ルート (C:\...) から直接パスを指定したことです。Web ブラウザはサーバー ファイル システムに直接アクセスできません (セキュリティ上の理由により)。このため、パスに相対アドレスを指定する必要がありました。絶対パスは、HTML ソースではなく、サーバー コードでのみ使用する必要があります。以下のように絶対パスを相対パスに変換することができました:
    `public static class HttpServerUtilityExtensions { public static string RelativePath( this HttpServerUtilityBase utility, string path, HttpRequestBase context ) { return path.Replace( context.ServerVariables[ "APPL_PHYSICAL_PATH" ], "/" )。交換( @"\"、 "/" ); } }`
    および: `
于 2013-02-07T18:59:10.767 に答える