我正在使用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, IDictionary
2平价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.WrappedAsyncVoid
1.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.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 step)+195 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)+128
这条线似乎是问题所在:
newPage.SetValue("DocumentName", "Articles")
当你上面已经分配它时,为什么要这样分配?
其次,您的DocumentName
属性是否基于页面类型的另一个必需属性,如Title
?您可以在页面类型的字段定义下看到此信息。下拉列表将直接位于“字段名称”框下。