如何解决“未指定DocumentName值”。即使已经提供了DocumentName属性,

时间:2019-04-11 08:04:00

标签: kentico

我正在使用Kentico的DancingGoatMVC示例。

现在我正在测试是否可以使用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值。 说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。

异常详细信息: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值。]    D:\ CMS \ MAIN \ CMSSolution \ DocumentEngine \ Documents \ TreeNode.cs:4008中的CMS.DocumentEngine.TreeNode.InsertNode(TreeNode父级)    D:\ CMS \ MAIN \ CMSSolution \ DocumentEngine \ Documents \ TreeNode.cs:3959中的CMS.DocumentEngine.TreeNode.Insert(TreeNode父级,布尔值useDocumentHelper)    D:\ CMS \ MAIN \ CMSSolution \ DocumentEngine \ DocumentHelper.cs:457中的CMS.DocumentEngine.DocumentHelper.InsertDocument(TreeNode节点,TreeNode父节点,TreeProvider树,布尔值allowCheckOut)    D:\ CMS \ MAIN \ CMSSolution \ DocumentEngine \ Documents \ TreeNode.cs:3946中的CMS.DocumentEngine.TreeNode.Insert(TreeNode父级,布尔值useDocumentHelper)    C:\ inetpub \ wwwroot \ Kentico12 \ DancingGoatMvc \ Controllers \ ArticlesController.cs:92中的DancingGoat.Controllers.ArticlesController.Add(ArticleViewModel articleViewModel)    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.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.CallEndDelegate(IAsyncResult asyncResult)+73    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+38    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+602    System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep步骤)+195    System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值并已完成同步)+128

1 个答案:

答案 0 :(得分:0)

这行似乎是问题所在:

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

为什么已经在上面分配了它,为什么要这样分配呢?

第二,您的DocumentName属性是否基于页面类型的另一个必需属性,例如Title?您可以在页面类型的字段定义下看到它。下拉列表将直接位于“字段名称”框中。