Razor 获取要在分页列表中显示的图像时出现问题

Razor 获取要在分页列表中显示的图像时出现问题,razor,umbraco,umbraco7,Razor,Umbraco,Umbraco7,我有下面的代码,它在底部显示列出的文本和分页。但是,当我试图将子页面中的图像放入列表时,我会出错。你知道为什么吗 @inherits Umbraco.Web.Mvc.UmbracoTemplatePage @{ Layout = "SiteLayout.cshtml"; } <div role="main" id="main"> <div id="blogPageFeatures"> <!-- loop through all

我有下面的代码,它在底部显示列出的文本和分页。但是,当我试图将子页面中的图像放入列表时,我会出错。你知道为什么吗

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = "SiteLayout.cshtml";
}

<div role="main" id="main">


    <div id="blogPageFeatures">
        <!-- loop through all of the child pages (blog posts) and grab data to output as a summary -->
        @{
        var pageSize =3;
        var page =1;int.TryParse(Request.QueryString["page"],out page);
        var items =Model.Content.Children().Where(x => x.IsDocumentType("BlogArticle")).OrderByDescending(x => x.CreateDate);
        var totalPages =(int)Math.Ceiling((double)items.Count()/(double)pageSize);

        if(page > totalPages)
        {
                page = totalPages;
        }
        else if(page <1)
        {
                page =1;
        }
        }




        @foreach(var item in items.Skip((page -1)* pageSize).Take(pageSize))
        {


                        <a href="@item.Url">

                                <!-- The next image line is where it errors -->
                                <img src="@Umbraco.Media(item.Children.blogArticleImage).Url">

                                    <h2>@item.Name</h2>
                                    <p class="blogTileDate">@item.CreateDate.ToString("dd/MM/yy")</p>





                            </a>

        }


<div class="clearfix"></div>


        <!-- Pagination START -->
        @if(totalPages >1)
        {
        <div class="pagination">
                        <ul>
                                @if(page >1)
                                {
                                        <li><a href="?page=@(page-1)">Prev</a></li>
                                }
                                @for(int p =1; p < totalPages +1; p++)
                                {
                                        var active =(p == page)?" class=\"active\"":string.Empty;
                                        <li@(Html.Raw(active))>
                                                <a href="?page=@p">@p</a>
                                        </li>
                                }
                                @if(page <totalPages)
                                {
                                        <li><a href="?page=@(page+1)">Next</a></li>
                                }
                        </ul>
                </div>
                            }
        <!-- Pagination END -->





        <div class="clearfix"></div>
    </div>
    <div class="clearfix"></div>
</div>
@继承Umbraco.Web.Mvc.UmbracoTemplatePage
@{
Layout=“siteloayout.cshtml”;
}
@{
var pageSize=3;
var page=1;int.TryParse(Request.QueryString[“page”],out page);
var items=Model.Content.Children().Where(x=>x.IsDocumentType(“博客文章”)).OrderByDescending(x=>x.CreateDate);
var totalPages=(int)Math.天花((double)items.Count()/(double)pageSize);
如果(页面>总页面)
{
页码=总页数;
}
否则,如果(第页)
@如果(共1页)
{
    @如果(第1页) {
  • } @对于(int p=1;p } @如果(第页)
    您将获得Model.Content.Children,这是IPPublishedContent对象的强类型集合。然后,您将调用item.Children.blogatilimage,这将不起作用,因为您试图获取项的子级上的a属性,而不是项本身的属性。您还尝试使用动态语法,这不会起作用在强类型对象上单击rk。请尝试将图像代码更改为:

    <img src="@Umbraco.TypedMedia(item.GetPropertyValue<int>("blogArticleImage")).Url">
    
    (“blogArticleImage”).Url>
    
    这应该可以做到,有一点需要注意的是,如果某个项目没有图像集,或者已选择的图像已被删除,它将抛出一个错误。更可靠的方法是这样的:

    var imageSrc = "ADD DEFAULT IMAGE PATH HERE";
    var media = Umbraco.TypedMedia(item.GetPropertyValue<int>("blogArticleImage"));
    if (media != null && !string.IsNullOrEmpty(media.Url))
    {
        imageSrc = media.Url;
    }
    <mig src="@imageSrc">
    
    var imageSrc=“在此处添加默认图像路径”;
    var media=Umbraco.TypedMedia(item.GetPropertyValue(“blogArticleImage”);
    if(media!=null&&!string.IsNullOrEmpty(media.Url))
    {
    imageSrc=media.Url;
    }
    
    您将获得Model.Content.Children,这是IPPublishedContent对象的强类型集合。然后您将调用item.Children.blogatilimage,这将不起作用,因为您试图获取项的子项上的a属性,而不是项本身的属性。您还尝试使用动态语法,这将在上,无法处理强类型对象。请尝试将图像代码更改为:

    <img src="@Umbraco.TypedMedia(item.GetPropertyValue<int>("blogArticleImage")).Url">
    
    (“blogArticleImage”).Url>
    
    这应该可以做到,有一点需要注意的是,如果某个项目没有图像集,或者已选择的图像已被删除,它将抛出一个错误。更可靠的方法是这样的:

    var imageSrc = "ADD DEFAULT IMAGE PATH HERE";
    var media = Umbraco.TypedMedia(item.GetPropertyValue<int>("blogArticleImage"));
    if (media != null && !string.IsNullOrEmpty(media.Url))
    {
        imageSrc = media.Url;
    }
    <mig src="@imageSrc">
    
    var imageSrc=“在此处添加默认图像路径”;
    var media=Umbraco.TypedMedia(item.GetPropertyValue(“blogArticleImage”);
    if(media!=null&&!string.IsNullOrEmpty(media.Url))
    {
    imageSrc=media.Url;
    }
    
    您遇到的错误是什么?这是我的朋友:编译器错误消息:CS1061:“System.Collections.Generic.IEnumerable”不包含“blogArticleImage”的定义,并且找不到接受“System.Collections.Generic.IEnumerable”类型第一个参数的扩展方法“blogArticleImage”(是否缺少using指令或程序集引用?)您遇到的错误是什么?这是my friend:编译器错误消息:CS1061:“System.Collections.Generic.IEnumerable”不包含“blogArticleImage”的定义,并且找不到接受类型为“System.Collections.Generic.IEnumerable”的第一个参数的扩展方法“blogArticleImage”(您是否缺少使用指令或程序集引用?)太好了!非常感谢您的帮助。太好了!非常感谢您的帮助。