#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
2 параметра) 35 System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39(IAsyncResult AsyncResult, ActionInvocation innerInvokeState) 39 System.Web.Mvc.Async.WrappedAsyncResult
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2.CallEndDelegate(IAsyncResult asyncResult) 77
1.CallEndDelegate(IAsyncResult AsyncResult) 73 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult AsyncResult) 52 System.Web.Mvc.Async.WrappedAsyncVoid
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) 39
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
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:
Эта строка здесь, похоже, является проблемой:
newPage.SetValue("DocumentName", "Articles")
Почему вы назначаете его таким образом, когда вы уже назначаете его выше?
Во-вторых, основано ли ваше DocumentName
свойство на другом обязательном свойстве типа страницы, например Title
? Вы можете увидеть это в разделе Определение полей типа страницы. Выпадающий список будет находиться непосредственно под полем Имена полей.