我正在第一个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>


...仅显示图像似乎过于复杂?当然这不是使用剃刀的最佳实践吗?

最佳答案

这里有两件事:


您无需将属性值强制转换为Int32,因为TypeMedia()接受stringobject id参数。
您可以使用UrlIPublishedContent属性而不是GetPropertyValue("umbracoFile")


这样就变成了:

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


是哪一个更好呢?显然有很多方法可以简化这种扩展方法,但是朋友最近向我展示的一种方法是uMapper,它允许您创建与文档类型相对应的强类型对象,其工作方式类似于AutoMapper。稍作准备,您的代码就可以变得更加易于理解和简洁。

09-25 22:19