Orchard CMS:如何在没有ID的Controller中获取特定内容项

时间:2013-06-19 08:24:37

标签: orchardcms orchardcms-1.6

我只是想知道如何在控制器中获取特定的ContentItem。

我想获取特定内容项目,然后在我的自定义视图上显示它的形状.. PS:我也不知道如何使用ContentManager.Get(ID)获取内容项的ID

    [HttpGet]
    public ActionResult Index(string jobType, string location) {

        var vm = new SearchForJobViewModel();

        var items = new List<CustomPart>();

        // Load the WhatsAround content items
        IEnumerable<ContentItem> whatsAroundContentItems = ContentManager.Query().ForType("Custom").List();

        foreach (ContentItem contentItem in whatsAroundContentItems)
        {
            ContentItemRecord contentItemRecord = contentItem.Record;
            if (contentItem == null)
                continue;

            //CustomPart item = new CustomPart(contentItemRecord.Data);
            //items.Add(item);
        }

        //Im also planning to pass the ContentItem in the view and then render it there
        //return View("../JobSearchResults", items.Single(i => i.Name == "MyContentItem");
        return View("../JobSearchResults", vm);
    }

附加

    [Themed]
    [HttpGet]
    public ActionResult Index(string jobType, string location) {

        var vm = new SearchForJobViewModel();

        vm.SelectedJobType = jobType;
        vm.SelectedLocation = location;

        //query all the content items
        IEnumerable<ContentItem> items = ContentManager.Query().List();

        foreach (ContentItem contentItem in items) {

            ContentItemRecord contentItemRecord = contentItem.Record;

            if (contentItem == null)
                continue;

            if (contentItemRecord.ContentType.Name == "CustomPage") {

                // I just painfully search the contents just to get the ID of the specific content item that I want to display
                // I dont know what table where I can see the ID on the content items
                if (contentItemRecord.Id == 40) {
                    ContentItem ci = contentItem;

                    var test = ci.As<CustomPart>().Scripts; //custom part that I made

                    // the body part (raw html from the wysiwg editor)
                    // this I wil render it in my view
                    vm.Body = ci.As<BodyPart>().Text;


                }
            }
        }

        return View("../JobSearchResults", vm);
    }

JobSearchResults.cshtml

     @Html.Raw(Model.Body)

它实际上看起来很奇怪,但我正在尝试使用Orchard CMS而不使用Orchard核心(内容部件,驱动程序,处理程序等)

1 个答案:

答案 0 :(得分:1)

你可以参考这个。 http://skywalkersoftwaredevelopment.net/blog/getting-the-current-content-item-in-orchard

或使用驱动程序

protected override DriverResult Display(YourModulePart part, string displayType, dynamic shapeHelper){
    var title = part.As<TitlePart>();
    //here you can access the title part.
}