如何修复'未指定DocumentName值。'即使已经提供了DocumentName属性

问题描述 投票:0回答:1

我正在使用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中的CMS.DocumentEngine.TreeNode.InsertNode(TreeNode parent):4008 CMS.DocumentEngine.TreeNode.Insert(TreeNode)父,布尔useDocumentHelper)在D:\ CMS \ MAIN \ CMSSolution \ DocumentEngine \ Documents \ TreeNode.cs:3959 CMS.DocumentEngine.DocumentHelper.InsertDocument(TreeNode节点,TreeNode parentNode,TreeProvider树,布尔allowCheckOut)在D:\ CMS \ MAIN \ CMSSolution \ DocumentEngine \ DocumentHelper.cs:457 CMS.DocumentEngine.TreeNode.Insert(TreeNode parent,Boolean useDocumentHelper)位于D:\ CMS \ MAIN \ CMSSolution \ DocumentEngine \ Documents \ TreeNode.cs:3946 DancingGoat.Controllers.ArticlesController。在C:\ inetpub \ wwwroot \ Kentico12 \ DancingGoatMvc \ Controllers \ ArticlesController.cs中添加(ArticleViewModel articleViewModel):92 lambda_method(Closure,ControllerBase,Object [])+139 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary2 parameters) +229 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2平价ameters)+35 System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39(IAsyncResult asyncResult,ActionInvocation innerInvokeState)+39 System.Web.Mvc.Async.WrappedAsyncResult2.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.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult)+73 System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult)+52 System.Web.Mvc.Async.WrappedAsyncVoid1.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.WrappedAsyncVoid1.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 step)+195 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)+128

kentico
1个回答
0
投票

这条线似乎是问题所在:

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

当你上面已经分配它时,为什么要这样分配?

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

© www.soinside.com 2019 - 2024. All rights reserved.