Как исправить 'Значение DocumentName не указано.' Даже если свойство DocumentName уже указано - PullRequest
0 голосов
/ 11 апреля 2019

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

Сейчас я проверяю, могу ли я добавить страницу статьи, используя API.

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

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

Спасибо

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

    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 не указано.Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

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

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

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

Исходный файл: C: \ inetpub \ wwwroot \ Kentico12 \ DancingGoatMvc \ Controllers \ ArticlesController.cs Строка: 92

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

[Исключение: значение DocumentName не указано.] CMS.DocumentEngine.TreeNode.InsertNode (родительский узел TreeNode) в D: \ CMS \ MAIN \ CMSSolution \ DocumentEngine \ Documents \ TreeNode.cs: 4008 CMS.DocumentEngine.TreeNode.Insert (TreeNodeparent, логическое значение useDocumentHelper) в D: \ CMS \ MAIN \ CMSSolution \ DocumentEngine \ Documents \ TreeNode.cs: 3959 CMS.DocumentEngine.DocumentHelper.InsertDocument (узел TreeNode, TreeNode parentNode, дерево TreeProvider, логическое значение allowCheckOut \ C в C:MAIN \ CMSSolution \ DocumentEngine \ DocumentHelper.cs: 457 CMS.DocumentEngine.TreeNode.Insert (родительский узел TreeNode, логическое значение useDocumentHelper) в D: \ CMS \ MAIN \ CMSSolution \ DocumentEngine \ Documents \ TreeNode.cs: 3946 DancingGoat.Controllers.Добавить (ArticleViewModel articleViewModel) в C: \ inetpub \ wwwroot \ Kentico12 \ DancingGoatMvc \ Controllers \ ArticlesController.cs: 92 lambda_method (Closure, ControllerBase, Object []) +139 System.Web.Mvc.ReflectedActionDescriptor.Execute (параметры ControllerContext controllerContext, IDictionary 2 parameters) +229 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 параметра) +35 System.Web.Mvc.Async.AsyncControllerActionInvoker.yncsRRR, 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.52.Sync.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.CallEndDelegate (IAsyncResult asyncResult) +73 System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +38 System.Web.CallHandlerExecutionStepT.Exp.Exp.Exp.Exp..HttpApplication.ExecuteStepImpl (шаг IExecutionStep) +195 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершенный синхронно) + 128

1 Ответ

0 голосов
/ 11 апреля 2019

Похоже, эта строка является проблемой:

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

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

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

...