2010-07-04 2 views
1

Моя проблема похожа на This question, но по-разному, что я считаю, что она требует отдельной нити.Отображение изображения из модели вида. MVC

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

// 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 и вставлена ​​в мой обозреватель. Я получаю изображение, которое я ожидал.

Я пробовал жестко кодировать этот путь файла в атрибут источника и все еще пустое поле.

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

Любые идеи, почему это может работать не так, как ожидалось?

Спасибо за ваше время.

ответ

2

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

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

или

<img src="<%= Url.Action("thumbnail", "image", Model.ImageID) %>" ... 
0

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

Я действительно не понимаю, что вы напишете на контрольной стороне вещей в предложенном вами сценарии 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: Новая строка в константе »С ошибкой poi nting к линии.

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

0

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

<img src="@Url.Content("~/ProjectThumbnails/" + Model.Id)"/> 
Смежные вопросы