ASP.NET MVCでContentフォルダーがどのように機能するかについて、まだ理解していないことがあります。物事を明確にするために、いくつか質問があります。
次のリンクは、MVC Webアプリケーションのコンテキスト内で役立つことがわかりましたが、上記の質問に対するいくつかの回答に感謝します。ありがとうございました。
1.Contentフォルダーはルートフォルダーですか? http:// localhost / はコンテンツを指しているのですか、それとも別のものですか?
いいえ、 http:// localhost:port / はコンテンツフォルダーを指していません。 http:// localhost:port/content / ...を介してコンテンツフォルダー内のファイルにアクセスできます。
2.Content/images/tempフォルダー内にdummyIcon.pngという名前のファイルがあります。ドメインレイヤー(コードライブラリプロジェクト)からそれを見つけるにはどうすればよいですか?
http:// localhost:port/Content/images/temp/dummyIcon.png としてアクセスできるはずです。
3.ASP.NET MVCで画像を表示するベストプラクティスは何ですか?データベースへの画像へのパスを保存する必要がありますか(個人的に好み)、またはバイト配列を保存してビューに返しますか?
画像の保存場所は、アプリケーションのニーズによって異なります。これらの汎用イメージは、アプリケーションイメージ(アイコン、会社のロゴなど)の表示に使用されます。その後、ファイルシステムに保存するのが最適です。
アプリケーションが画像を処理し、画像の保存や操作などに取り組んでいる場合は、DBが必要になる場合があります。 Webアプリケーションで使用される画像を保存するのはオーバーヘッドだと思います。
ルートで無視される場合、ルート内のすべてのものはルートを指します。
あなたがあなたのプロジェクトのルートに画像を置いている場合。次に、_http:://localhost/dummy.ico"
_で404が返され、コントローラーが見つからないとします。 Until_global.asax.cs
_でこれを行います:
_routes.IgnoreRoute("dummy.ico");
//you could add wildcards here to match different things
_
使用する場合、コードからFile.Open();
と言う場合、ファイルへの物理パスが必要です。次のようになります。
_string filePath = Server.MapPath(Url.Content("~/Content/Images/Image.jpg"));
_
ここであなた次第ですが、すべてを1か所にまとめたい場合は、データベースにファイルを配置するのが理にかなっています。アプリを移動する必要がある場合は、データベースを移動するだけです。
ファイルパスに関しては、重複したファイル名を望まないことを覚えておいてください。したがって、各ファイルに GUID
を指定し、リンクする必要があります。多数のファイル(または大きなファイル自体)がある場合に意味があるので、データベースが狂ったように成長することはありません。
HTH
コントローラーが返すモデルオブジェクトを作成する必要があります。この例では、作成したクラスであるSearchPageModelを返しています。しかし、このオブジェクトにimageURLというプロパティがあるとしましょう
ただし、コントローラーが実際にActionResultを返すことを確認してください
たとえば...
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Search()
{
SearchPageModel Model = new SearchPageModel();
// populate the Model properties
Model.ImageURL = "myjpeg"
return View("Search", Model);
}
次に、このモデルオブジェクトを目的のビューに渡します。この場合、「検索」ビュー
画像を表示するには、追加するビューに..
<img src="Images/<%=Model.ImageURL %>.jpg" />