Не удается получить вложенный контент в SurfaceController и вернуть его в формате JSON в AJAX - PullRequest
0 голосов
/ 03 сентября 2018

Я столкнулся с этой проблемой. У меня есть представление, которое отображается так:

@inherits Umbraco.Web.Mvc.UmbracoViewPage
@using MyProject.Web.Models;
@using ContentModels = Umbraco.Web.PublishedContentModels;
@{
    Layout = "MasterPage.cshtml";
}

@Html.Partial("_HeroModule")

@foreach (var item in Model.GetPropertyValue<IEnumerable<IPublishedContent>>("generalContentCollection"))
{
    var partialViewName = "_" + item.DocumentTypeAlias;
   if (partialViewName == "_curtainsModule")
   {
        Html.RenderPartial("CurtainsModule", new CurtainsModuleModel(Model, item));
    }
   else
    {
        @Html.Partial(partialViewName, item);
    }

Здесь 'item' - это общая коллекция вложенного контента. Внутри него есть еще одна коллекция, которую мне нужно достать, называемая "fabricCollection", которая также называется Nested Content.

Проблема в том, что когда я иду к SurfaceController и делаю это , fabricCollection возвращает ноль , вероятно, потому что это вложенное содержимое:

     [HttpPost]
        public JsonResult GetFabrics(int data)
        {
    //gets the id of the actual page doctype
        var page = Umbraco.TypedContent(data);
        //fabricsCollection underneath returns null
        var fabricsCollection = page.GetPropertyValue<IEnumerable<IPublishedContent>>("fabricsCollection");
        return Json(fabricsCollection);
    }
}

и вызов ajax, который отлично работает:

  $(".clearAll-desktop").click(function () {
    event.preventDefault;
    var pageId = $(".curtains-module").attr('id');
    var fabrics = "@Model.FabricsCollection.ToString()";
    debugger;
    console.log(pageId);
    $.ajax({
        url: '/umbraco/Surface/CurtainsModuleSurface/GetFabrics',
        type: 'POST',
        data: { data: pageId, collectionName: fabrics },
        dataType: 'string',
        success: function (data1) {
            console.log('success');
        }
    });
    return false;
})

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

...