Подтвердить что ты не робот

Путь к файлам Внутри папки содержимого (ASP.NET MVC)

Там что-то я до сих пор не понимаю о том, как папка содержимого работает в ASP.NET MVC. Чтобы сделать все более ясным, у меня есть несколько вопросов:

  • Является ли папка содержимого корневой папкой? Я имею в виду http://localhost/ указать на Content или это что-то еще?
  • У меня есть файл с именем dummyIcon.png внутри папки Content/images/temp. Как найти его на своем доменном уровне (который является проектом библиотеки кодов)?
  • Какова наилучшая практика отображения изображений в ASP.NET MVC? Должен ли я хранить путь к изображению в базе данных (что я лично предпочитаю), или я могу сохранить массив байтов и вернуть его в представление?

Я нашел следующие ссылки полезными в контексте веб-приложения MVC, но я по-прежнему оцениваю некоторые ответы на вопросы, изложенные выше. Спасибо.

Может ли ASP.NET MVC-контроллер вернуть изображение?

как отображать изображение с помощью представления и контроллера с помощью ASP.NET MVC

4b9b3361

Ответ 1

1. В папке Content находится корневая папка? Я имею в виду http://localhost/ указать на Контент или это что-то еще?

Нет, http://localhost:port/ не указывает на папку содержимого. Вы можете получить доступ к файлам в папке содержимого через http://localhost:port/content/...

2. У меня есть файл с именем dummyIcon.png внутри папки Content/images/temp. Как найти его на своем доменном уровне (который является проектом библиотеки кодов)?

У вас должен быть доступ к нему как http://localhost:port/Content/images/temp/dummyIcon.png

3. Какова наилучшая практика отображение изображений в ASP.NET MVC? Должен ли я хранить путь к изображению в базы данных (которая я лично предпочитают), или я могу сохранить массив байтов и верните его в представление?

Где вы храните изображения, зависит от ваших потребностей приложения. Являются ли эти общие изображения, которые используются для отображения изображений приложений (значки, логотип компании и т.д.). Тогда лучше хранить их в файловой системе.

Если ваше приложение имеет дело с изображениями, и вы работаете над сохранением изображений, манипуляций и т.д., тогда вам может понадобиться БД. Я думаю, что хранение изображений, используемых в веб-приложении, является накладными расходами.

Ответ 2

  • Все, что в корне будет указывать на корень, если оно игнорируется вашими маршрутами:

    Если у вас есть изображение, размещенное в корневом каталоге вашего проекта. Затем, скажем, http:://localhost/dummy.ico" даст вам 404, контроллер не найден. До вы делаете это в своем 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"));
    
  • Это до вас, хотя я бы сказал, что размещение файлов в базе данных имеет большой смысл, если вы хотите все в одном месте. Если вам нужно переместить приложение, вы просто переместите базу данных.

Когда дело доходит до путей к файлу, помните, что вы не хотите дублировать имена файлов, поэтому вам нужно предоставить каждому файлу GUID и затем свяжите его. Это может иметь смысл, если у вас есть большое количество файлов (или больших файлов), поэтому вы не будете выглядеть как сумасшедшие.

НТН

Ответ 3

Вы должны сделать объект модели для возврата вашего контроллера. в этом примере я возвращаю SearchPageModel, класс, который я создал. но позволяет сказать, что у этого объекта есть свойство, называемое imageURL

но убедитесь, что контроллер фактически возвращает ActionResult

так, например...

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Search()
    {
        SearchPageModel Model = new SearchPageModel();

        // populate the Model properties
        Model.ImageURL = "myjpeg"

        return View("Search", Model);
    }

i затем передайте этот объект модели обратно к моему желаемому виду в этом случае мой "Поиск" View

и для отображения изображения в представлении, которое я добавил бы.

<img src="Images/<%=Model.ImageURL %>.jpg" />