Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 如何从替换文件中呈现ContentItem的特定ContentPart的形状?_Asp.net Mvc 4_Razor_Orchardcms - Fatal编程技术网

Asp.net mvc 4 如何从替换文件中呈现ContentItem的特定ContentPart的形状?

Asp.net mvc 4 如何从替换文件中呈现ContentItem的特定ContentPart的形状?,asp.net-mvc-4,razor,orchardcms,Asp.net Mvc 4,Razor,Orchardcms,考虑到我们有一个简单的ContentType命名产品,它有一些字段和ContentParts,比如CommentPart。当我们为Product(myteme/Views/Content-Product.Detail.cshtml)创建一个替代文件时,每个字段和部分都应该从替代文件中呈现。例如,我们可以访问字段值和显示主题 但我的问题是,如何从我们的替代文件中呈现ContentType部分的默认形状 例如,产品有CommentPart,我想调用它在任意视图位置的默认显示: @using Orch

考虑到我们有一个简单的
ContentType
命名产品,它有一些字段和
ContentPart
s,比如
CommentPart
。当我们为
Product
myteme/Views/Content-Product.Detail.cshtml
)创建一个替代文件时,每个字段和部分都应该从替代文件中呈现。例如,我们可以访问字段值和显示主题

但我的问题是,如何从我们的替代文件中呈现
ContentType
部分的默认形状

例如,产品有
CommentPart
,我想调用它在任意视图位置的默认
显示:

@using Orchard.Utility.Extensions;
@{
    if (Model.Title != null)
    {
        Layout.Title = Model.Title;
    }

    Model.Classes.Add("content-item");

    var contentTypeClassName = ((string)Model.ContentItem.ContentType).HtmlClassify();
    Model.Classes.Add(contentTypeClassName);

    var tag = Tag(Model, "article");


    var Title = Model.ContentItem.TitlePart.Title;
    var CreatedUtc = Model.ContentItem.CommonPart.CreatedUtc;
    var Path = Model.ContentItem.AutoroutePart.Path;
    var Thumb = Model.ContentItem.Product.ThumbnailImage.FileName;
    var Price = Model.ContentItem.Product.Price.Value;
    var CooperatorPrice = Model.ContentItem.Product.CooperatorPrice.Value;
    var Discount = Model.ContentItem.Product.Discount.Value;
    var Available = Model.ContentItem.Product.Available.Value ?? false;
    var Special = Model.ContentItem.Product.Special.Value ?? false;
}
@tag.StartElement
<a href="@Path" >
    @if (Special != null)
    {
        <img class="special" src="@Url.Content("Themes/RayanTechTheme/Content/Images/specialoffer.png")" />
    }
    @if (Thumb != null)
    {
        <img class="thumb" src="@Url.Content(Thumb)" />
    }
    <header>@Title</header>
    @if (Available != null)
    {
        <span class="available"></span>
    }
    @if (Price != null && Price > 0)
    {
        <span class="price">@RayanTechTheme.Helpers.CurrencyHelper.GetSeperatedCurrency(Price) تومان</span>
    }
    @if (Price != null && Price > 0 && Discount != null && Discount > 0)
    {
        <span class="prev-price">@RayanTechTheme.Helpers.CurrencyHelper.GetSeperatedCurrency(Price + Discount) تومان</span>
    }
    @if (CooperatorPrice != null && CooperatorPrice > 0)
    {
        <span class="cooperatorprice">@RayanTechTheme.Helpers.CurrencyHelper.GetSeperatedCurrency(CooperatorPrice) تومان</span>
    }
    @if (Discount != null && Discount > 0)
    {
        <span class="discount">@RayanTechTheme.Helpers.CurrencyHelper.GetSeperatedCurrency(Discount) تومان</span>
    }
    @if (CreatedUtc != null)
    {
        <span class="createdutc">@RayanTechTheme.Helpers.DateHelper.GetPersianDate(CreatedUtc)</span>
    }
    <div class="more">
         @Display.Parts_CommentForm(Model.ContentItem.CommentPart)  /// >>>>>  HOW DO IT???
    </div>
</a>
@tag.EndElement
@使用Orchard.Utility.Extensions;
@{
如果(Model.Title!=null)
{
Layout.Title=Model.Title;
}
Model.Classes.Add(“内容项”);
var contentTypeClassName=((字符串)Model.ContentItem.ContentType).HtmlClassify();
Model.Classes.Add(contentTypeClassName);
var标签=标签(型号,“物品”);
var Title=Model.ContentItem.TitlePart.Title;
var CreatedUtc=Model.ContentItem.CommonPart.CreatedUtc;
var Path=Model.ContentItem.AutoroutePart.Path;
var Thumb=Model.ContentItem.Product.ThumbnailImage.FileName;
var价格=Model.ContentItem.Product.Price.Value;
var cooperatiorprice=Model.ContentItem.Product.cooperatiorprice.Value;
var折扣=Model.ContentItem.Product.Discount.Value;
var Available=Model.ContentItem.Product.Available.Value??false;
var Special=Model.ContentItem.Product.Special.Value??false;
}
@星电信
@tag.EndElement

如何实现我提到的最后一个

最好的方法是使用

将您的
重写为:


@显示(模型注释)
然后在你的Placement.info中


当呈现ContentItem形状时,其每个部分的形状都已经构建好,可以显示(我想,如果我错了,有人可以纠正我)

@Display()
辅助对象用于渲染从零件驱动程序创建的形状。Placement.info告诉Orchard这些形状应该显示在哪里



另请参见:

您可能对这项技术感兴趣:谢谢您,它让我工作了,我+1投了您的票。但我不明白当我们明确地将“评论”的视图称为我们的替代视图时,部分的含义是什么!这意味着零件的默认放置形式为“-”!请告诉我在placement上发生了什么,如果我们不设置placement info,为什么显示方法不起作用?在placement.info中,“Comments:1”和“Content:1”值之间有什么区别?如果您将placement.info值设置为“Content:1”(区域),则零件将放置在您曾经放置@Display(Model.Content)的位置在模板中。在我的回答中,我们通过编写@Display(Model.Comments)设置了一个名为“Comments”的区域,并告诉Orchard将CommentForm部分放在这个区域中。“:1”是将每个部分放置在区域内的顺序。请仔细阅读上面Betrand的博客文章,因为它很好地解释了这个场景。