隐藏 Umbraco 属性
Make Umbraco property hidden
我需要为 umbraco 成员(来自最终成员)存储密码重置令牌。现在我得到的解决方案是创建一个 属性 并使用它。但问题是这个令牌应该对所有人隐藏。有什么干净的方法可以使 属性 隐藏(不添加对包的依赖性)?
到目前为止 approach 我发现看起来像这样,但我正在寻找更简单的方法来隐藏 属性:
public class ApplicationHandler : ApplicationEventHandler
{
public ApplicationHandler()
{
ContentControl.AfterContentControlLoad = new ContentControl.AfterContentControlLoadEventHandler(ContentControl_AfterContentControlLoad);
}
private void ContentControl_AfterContentControlLoad(ContentControl contentControl, ContentControlLoadEventArgs e)
{
int docId = 0;
int.TryParse(HttpContext.Current.Request["id"], out docId);
IContent content = ApplicationContext.Current.Services.ContentService.GetById(docId);
Control ctl = umbraco.presentation.LiveEditing.Utility.FindControl<Control>(delegate(Control c)
{
return c.ClientID.EndsWith("propertyAliasToHide");
}, contentControl.Page);
HideProperty(ctl);
}
private void HideProperty(Control control)
{
if (control != null)
{
Control parent = control.Parent;
if (parent != null)
{
if (parent.Parent != null)
{
if (parent.Parent.Parent != null)
{
parent.Parent.Parent.Visible = false;
}
}
}
}
}
}
最简单的方法是简单地创建一个 属性 编辑器,例如 umbraco 内置的标签,然后确保它不会在 UI 中显示任何内容。然后,您可以使用此编辑器向成员添加自定义 属性,您将能够通过代码在其中保存一个值,而无需在后台 UI.
中显示
这里有关于创建 属性 编辑器的说明。您可以跳过大部分他的部分,因为您不需要通过后台在编辑器中显示或编辑值 - 您只是将它用作一种数据容器,用于仅由以下人员访问和修改的隐藏值代码。
https://our.umbraco.org/documentation/tutorials/Creating-a-Property-Editor/
您可以只使用标签 属性 编辑器来实现这一点。只需转到成员类型并添加标签。您可以 select 数据类型,它还可以选择对用户隐藏值或使其不可编辑。
我经常使用它来更新我不想被编辑或从 umbraco 后台的成员资料中看到的字段。
我需要为 umbraco 成员(来自最终成员)存储密码重置令牌。现在我得到的解决方案是创建一个 属性 并使用它。但问题是这个令牌应该对所有人隐藏。有什么干净的方法可以使 属性 隐藏(不添加对包的依赖性)?
到目前为止 approach 我发现看起来像这样,但我正在寻找更简单的方法来隐藏 属性:
public class ApplicationHandler : ApplicationEventHandler
{
public ApplicationHandler()
{
ContentControl.AfterContentControlLoad = new ContentControl.AfterContentControlLoadEventHandler(ContentControl_AfterContentControlLoad);
}
private void ContentControl_AfterContentControlLoad(ContentControl contentControl, ContentControlLoadEventArgs e)
{
int docId = 0;
int.TryParse(HttpContext.Current.Request["id"], out docId);
IContent content = ApplicationContext.Current.Services.ContentService.GetById(docId);
Control ctl = umbraco.presentation.LiveEditing.Utility.FindControl<Control>(delegate(Control c)
{
return c.ClientID.EndsWith("propertyAliasToHide");
}, contentControl.Page);
HideProperty(ctl);
}
private void HideProperty(Control control)
{
if (control != null)
{
Control parent = control.Parent;
if (parent != null)
{
if (parent.Parent != null)
{
if (parent.Parent.Parent != null)
{
parent.Parent.Parent.Visible = false;
}
}
}
}
}
}
最简单的方法是简单地创建一个 属性 编辑器,例如 umbraco 内置的标签,然后确保它不会在 UI 中显示任何内容。然后,您可以使用此编辑器向成员添加自定义 属性,您将能够通过代码在其中保存一个值,而无需在后台 UI.
中显示这里有关于创建 属性 编辑器的说明。您可以跳过大部分他的部分,因为您不需要通过后台在编辑器中显示或编辑值 - 您只是将它用作一种数据容器,用于仅由以下人员访问和修改的隐藏值代码。
https://our.umbraco.org/documentation/tutorials/Creating-a-Property-Editor/
您可以只使用标签 属性 编辑器来实现这一点。只需转到成员类型并添加标签。您可以 select 数据类型,它还可以选择对用户隐藏值或使其不可编辑。
我经常使用它来更新我不想被编辑或从 umbraco 后台的成员资料中看到的字段。