2013-08-29 6 views
1

Я работаю над своим первым веб-сайтом Umbraco 6 MVC, его просто потребовалось около часа, чтобы выяснить, как отображать изображение, управляемое контентом, в режиме бритвы. Это косяк быть, что трудно, я должен быть что-то не хватает ...Отображение изображения, управляемого контентом, на веб-сайте Umbraco 6 MVC

Это то, что я закончил с ...

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage 
@{ 
    Layout = null; 
} 
<!Doctype HTML> 
<html> 
<head> 
    <title>blah</title> 
</head> 
<body> 
    <header> 
     <img src="@Umbraco.TypedMedia(Int32.Parse(Model.Content.GetPropertyValue("siteLogo").ToString())).GetPropertyValue("umbracoFile")"/> 
    </header> 
</body> 
</html> 

... который кажется слишком сложным, чтобы просто отобразить изображение? Конечно, это не может быть лучшей практикой с использованием бритвы?

ответ

6

Две вещи здесь:

  • Вам не нужно отбрасывать значение свойства к Int32, а TypeMedia() принимает параметр в string или object ID.

  • Вы можете использовать Url свойство IPublishedContent вместо GetPropertyValue("umbracoFile")

Так он становится:

<img src="@Umbraco.TypedMedia(Model.Content.GetPropertyValue("siteLogo")).Url"/> 

что намного лучше, не так ли? Очевидно, существует много способов сократить этот метод расширения, но тот, который недавно показал мне знакомый, был uMapper, который позволяет создавать строго типизированные объекты, соответствующие вашим типам документов, которые работают так же, как AutoMapper. Для того, чтобы немного работать на ногах, ваш код может стать намного понятнее и кратким.

+0

Это гораздо приятнее. –