Как исправить «Значение DocumentName не указано». Даже если свойство DocumentName уже предоставлено

#kentico

#kentico

Вопрос:

Я использую образец DancingGoatMVC из Kentico.

Теперь я проверяю, могу ли я добавить страницу статьи с помощью api.

По сути, я добавил новый метод в контроллер статьи и представления.

Как вы можете видеть, я уже заполняю DocumentName, но ошибка все еще возникает, есть идеи по устранению этой ошибки и что я могу упустить, что вызывает эту проблему?

Спасибо

Контроллеры:

     public ActionResult Add()
    {
        return View();
    }
    [HttpPost]
    public ActionResult Add(ArticleViewModel articleViewModel)
    {
        // Creates a new instance of the Tree provider
        TreeProvider tree = new         TreeProvider(MembershipContext.AuthenticatedUser);

        // Gets the current site's root "/" page, which will serve as the         parent page
        TreeNode parentPage = tree.SelectNodes()
            .Path("/Articles")
            .OnCurrentSite()
            .Culture("en-us")
            .FirstObject;

        if (parentPage.DocumentName != null)
        {
            TreeNode newPage = TreeNode.New(SystemDocumentTypes.Root, 
        tree);

            // Sets the properties of the new page
            newPage.DocumentName = "Articles";
            newPage.DocumentCulture = "en-us";
            newPage.SetValue("Title", "test");
            newPage.SetValue("Summary", "test");
            newPage.SetValue("Text", "test");

            newPage.SetValue("DocumentName", "Articles");
            // Inserts the new page as a child of the parent page
            newPage.Insert(parentPage,true);
        }

        return RedirectToAction("Index");
    }
  

Ошибка:

Ошибка сервера в приложении ‘/ Kentico12_DancingGoatMvc’. Значение DocumentName не указано. Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: Система.Исключение: значение DocumentName не указано.

Ошибка источника:

Строка 90: newPage.setValue(«DocumentName», «Articles»); Строка 91: // Вставляет новую страницу как дочернюю по отношению к родительской странице Строка 92: newPage.Вставить (parentPage, true); Строка 93: } Строка 94:

Исходный файл: C:inetpubwwwrootKentico12DancingGoatMvcControllersArticlesController.cs Строка: 92

Трассировка стека:

[Исключение: значение DocumentName не указано.] CMS.DocumentEngine .TreeNode .insertNode (родительский элемент TreeNode) в D:CMSMAINCMSSolutionDocumentEngineDocumentsTreeNode.cs:4008 CMS.DocumentEngine .TreeNode .Вставить (родительский элемент TreeNode, логическое значение useDocumentHelper) в D:CMSMAINCMSSolutionDocumentEngineDocumentsTreeNode.cs:3959 CMS.DocumentEngine .DocumentHelper .InsertDocument(TreeNode node, TreeNode parentNode, TreeProvider tree, Boolean allowCheckOut) в D:CMSMAINCMSSolutionDocumentEngineDocumentHelper.cs:457 CMS.DocumentEngine .TreeNode .Вставить (родительский элемент TreeNode, логическое значение useDocumentHelper) в D:CMSMAINCMSSolutionDocumentEngineDocumentsTreeNode.cs:3946 Танцующий козел.Контроллеры.ArticlesController .Добавьте (ArticleViewModel articleViewModel) в C:inetpubwwwrootKentico12DancingGoatMvcControllersArticlesController.cs:92 lambda_method(замыкание , база контроллера , объект[] ) 139 System.Web.Mvc.ReflectedActionDescriptor.Выполнить (ControllerContext ControllerContext, идентификатор 2 parameters) 229
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 параметра) 35 System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39(IAsyncResult AsyncResult, ActionInvocation innerInvokeState) 39 System.Web.Mvc.Async.WrappedAsyncResult 2.CallEndDelegate(IAsyncResult asyncResult) 77
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) 42
System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() 72
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() 387
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() 387
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() 387
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() 387
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) 42
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() 38
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) 188
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) 38
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) 29
System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate(IAsyncResult AsyncResult) 73 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult AsyncResult) 52 System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) 39
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) 38
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) 43
System.Web.Mvc.Async.WrappedAsyncVoid
1.Вызываемdelegate(IAsyncResult AsyncResult) 73 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult AsyncResult) 38 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Выполнить () 602 System.Web.HttpApplication.ExecuteStepImpl(шаг IExecutionStep) 195 System.Web.HttpApplication.ExecuteStep(шаг IExecutionStep, логическое значение и выполняется синхронно) 128

Ответ №1:

Эта строка здесь, похоже, является проблемой:

newPage.SetValue("DocumentName", "Articles")

Почему вы назначаете его таким образом, когда вы уже назначаете его выше?

Во-вторых, основано ли ваше DocumentName свойство на другом обязательном свойстве типа страницы, например Title ? Вы можете увидеть это в разделе Определение полей типа страницы. Выпадающий список будет находиться непосредственно под полем Имена полей.