Отображение изображения из view-модели.MVC - PullRequest
1 голос
/ 04 июля 2010

Моя проблема похожа на Этот вопрос , но достаточно отличается, так что я чувствую, что это требует отдельного обсуждения.

Итак, у меня есть следующее «представление»;

// A load of other calls to Model.Title, Model.Description, Model.DownloadURL 
// which work fine so no issues with actually ViewModel communication.
<fieldset>
    <div id="projectDiv">
                      // Model.ThumbnailPath is a fully qualified path to an image
                      // stored on disk, within another folder in another project.
        <img src="<%= Model.ThumbnailImagePath %>" alt="Thumbnail Image" height="100px" width="100px" />

    </div>

К сожалению, все, что я получаю, это обведенное в общих чертах белое поле ... без изображения

Я отладил приложение и перехватил переменную пути к файлу, которая отправляется в ViewModel, и вставил ее в проводник моего компьютера.Я получаю изображение, которое ожидал.

Я попытался жестко запрограммировать этот путь к файлу в атрибуте source и, тем не менее, в пустое белое поле.

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

Есть идеи, почему это может работать не так, как ожидалось?* Спасибо за ваше время.

Ответы [ 3 ]

2 голосов
/ 04 июля 2010

Атрибут src должен быть URL, а не путем к файлу. Если вы можете, поместите изображения в папку content / images и укажите там ссылку на них. Если нет, то есть файл должен оставаться там, где он есть, то подумайте о том, чтобы иметь контроллер, который может прочитать изображение и вернуть его как ContentResult с правильным типом mime, и использовать URL для идентификатора контроллера / действия / изображения в качестве атрибут src для изображения.

<img src="<%= Url.Content( "~/images/thumbnails/" + Model.ThumbnailName ) %>" ...

или

<img src="<%= Url.Action( "thumbnail", "image", Model.ImageID ) %>" ...
0 голосов
/ 09 августа 2011

попробуйте использовать ...

<img src="@Url.Content("~/ProjectThumbnails/" + Model.Id)"/>
0 голосов
/ 04 июля 2010

Хотя нет смысла отвечать на ответ в этом поле, мне нужно написать код.

Я не очень понимаю, что бы вы написали на стороне контроллера в предложенном вами сценарии tvanfosson.

Вот что существует:

Папка изображений в: MySolution.Models.Entities.Images.ProjectThumbnails. В этой папке существует несколько имен bmp, названных в соответствии с GUID объекта, которому они принадлежат.

Теперь у меня есть контроллер в: MySolution.Controllers.ProjectsController следующим образом:

 public ContentResult ProjectThumbnails(Guid Id)
 {
     ContentResult result = new ContentResult();

     Project project = projectService.GetProject(Id);
                      //This is still a fully qualified disk location path
     result.Content = project.ThumbnailImagePath; 
     return result;            
 }

Тогда в поле зрения:

<img src="<%= Url.Content(~/ProjectThumbnails/" + Model.Id) %>" />

Тем не менее, я не получаю intellisense от ввода «Url.Content», что редко бывает хорошо, а также, что я запускаю сайт, я получаю следующую ошибку:

«Сообщение об ошибке компилятора: CS1010: Новая строка в константе». Ошибка указывает на строку.

Не могли бы вы уточнить, что мне здесь не хватает? Учитывая, насколько легко MVC делает большинство других аспектов создания веб-сайтов, просто смешно, насколько сложно обрабатывать изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...