Мы пытаемся создать пользовательскую форму с помощью поля FieldRenderingControl. Все в порядке, пока мы не попробуем новую форму в списке, который отсутствует в корневом сайте.Ошибка с пользовательской формой и FieldRenderingControl
Так новые/редактирования для list1 на сайте/(работы)
редактировать для list2 на сайте/сайты/тестовый сайте (работы) новые для list2 на сайте/сайтах/тестовый сайте (не работает)
Ошибка, которую мы видим в журналах uls: «Список не существует. Выбранная страница содержит список, который не существует. Возможно, он был удален другим пользователем».
Вот код, который мы используем:
foreach (SPField f in listOfFields) // cType.Fields)
{
var field = f;
if (item != null)
field = item.Fields.GetFieldByInternalName(field.InternalName);
string uniqueid = field.Id.ToString().Replace("-", "_");
if (!(field.FieldRenderingControl is TaxonomyFieldControl))
{
var editControl = field.FieldRenderingControl;
editControl.ID = "fld_" + uniqueid; // fix for Lookup picker
editControl.FieldName = field.InternalName;
//edit mode if id is provided
if (item != null)
{
editControl.ControlMode = SPControlMode.Edit;
editControl.ItemId = item.ID;
var context = SPContext.GetContext(HttpContext.Current, item.ID, list.ID, web);
editControl.RenderContext = context;
editControl.ItemContext = context;
}
else
{
editControl.ControlMode = SPControlMode.New;
var context = SPContext.GetContext(HttpContext.Current, list.DefaultView.ID, list.ID, web);
editControl.RenderContext = context;
}
editControl.ListId = list.ID;
this.pnlControls.Controls.Add(new System.Web.UI.WebControls.Label
{
ID = "lbl_" + uniqueid,
Text = field.Title
});
this.pnlControls.Controls.Add(editControl);
}
}
Я могу предоставить больше кода, если это необходимо. Любая помощь приветствуется.
Спасибо.
Edit - Из ULS Логи
«Список не существует Страница выбран содержит список, который не существует, он может быть удален другим пользователем...»
Stack Trace:
System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.SharePoint.SPContext.GetContentTypeThroughQueryString(String strIdx)
at Microsoft.SharePoint.SPContext.get_ContentTypes()
at Microsoft.SharePoint.SPContext.ContentTypeInternal(String contentTypeId)
at Microsoft.SharePoint.SPContext.get_Fields()
at Microsoft.SharePoint.WebControls.FieldMetadata.get_Field()
at Microsoft.SharePoint.WebControls.TextField.CreateChildControls()
at System.Web.UI.Control.EnsureChildControls()
at Microsoft.SharePoint.WebControls.BaseFieldControl.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)cc
Обеспечить полную проверку стека ошибки для лучшего анализа. –