Umbraco 如何在usercontrol中查找当前模板id和名称

Umbraco 如何在usercontrol中查找当前模板id和名称,umbraco,Umbraco,要查找我们使用的当前节点 Node currentNode = Node.GetCurrent(); string myValue = currentNode.GetProperty("productDetails").Value; lblProductDetails.Text = myValue; 但是我有一个场景,我必须根据模板传递属性,我有两个使用不同文档类型的模板,因此如果template1 get(Template1property1,…)与Template2 get(Templ

要查找我们使用的当前节点

Node currentNode = Node.GetCurrent();

string myValue = currentNode.GetProperty("productDetails").Value;

lblProductDetails.Text = myValue;
但是我有一个场景,我必须根据模板传递属性,我有两个使用不同文档类型的模板,因此如果template1 get(Template1property1,…)与Template2 get(Template2property1,…)类似

有没有可能实现这样的目标,或者有没有更好的方法在单用户控件中实现这一点

任何协助或帮助都将不胜感激


谢谢

确实可以,实际上有很多方法,但我将展示“我在宏后面使用.Net用户控件”的路线。我将做一些假设,以演示如何做,因为它们在您的问题中没有列出

假设 如何 我们要做的是在用户控件上创建一个.Net属性,然后让模板决定要查找哪个Umbraco属性名。这种方式意味着您不必依赖于一堆if语句

一,。编写用户控件的代码(在VisualStudio中),并确保在代码中定义了属性,如下所示

private string\u details属性;
公共字符串详细信息属性
{
设置{this.\u detailsProperty=value;}
}
二,。将用户控件上载到web根目录中的
/usercontrols/
文件夹,并将DLL(如果已编译)上载到
/bin/
文件夹

三,。创建宏(在Umbraco中)并指定给用户控件。让我们命名宏
MyAbstractControl
,然后从下拉列表中为其分配.Net用户控件。然后单击保存(重要!)

四,。如果在上述步骤中单击了“保存”,则会显示“浏览属性”按钮。单击该按钮,您将从用户控件中看到您的属性。确保选中该框,然后单击“保存属性”按钮。若要检查是否完成,请重新加载宏并转到“属性”选项卡,然后查看添加到列表中的用户控件的属性

五,。向模板中添加类似以下代码的内容,以查找不同的Umbraco特性别名


六,。然后,您可以对问题中的代码进行一次小的更新,如下所示,以使其按需要运行

if(!String.IsNullOrEmpty(this.\u detailsProperty))
{
Node currentNode=Node.GetCurrent();
字符串myValue=currentNode.GetProperty(this.\u detailsProperty).Value;
lblProductDetails.Text=myValue;
}

希望这能有所帮助。

确实可以,实际上有很多方法,但我将展示“我正在使用宏后面的.Net用户控件”路线。我将做一些假设,以演示如何做,因为它们在您的问题中没有列出

假设 如何 我们要做的是在用户控件上创建一个.Net属性,然后让模板决定要查找哪个Umbraco属性名。这种方式意味着您不必依赖于一堆if语句

一,。编写用户控件的代码(在VisualStudio中),并确保在代码中定义了属性,如下所示

private string\u details属性;
公共字符串详细信息属性
{
设置{this.\u detailsProperty=value;}
}
二,。将用户控件上载到web根目录中的
/usercontrols/
文件夹,并将DLL(如果已编译)上载到
/bin/
文件夹

三,。创建宏(在Umbraco中)并指定给用户控件。让我们命名宏
MyAbstractControl
,然后从下拉列表中为其分配.Net用户控件。然后单击保存(重要!)

四,。如果在上述步骤中单击了“保存”,则会显示“浏览属性”按钮。单击该按钮,您将从用户控件中看到您的属性。确保选中该框,然后单击“保存属性”按钮。若要检查是否完成,请重新加载宏并转到“属性”选项卡,然后查看添加到列表中的用户控件的属性

五,。向模板中添加类似以下代码的内容,以查找不同的Umbraco特性别名


六,。然后,您可以对问题中的代码进行一次小的更新,如下所示,以使其按需要运行

if(!String.IsNullOrEmpty(this.\u detailsProperty))
{
Node currentNode=Node.GetCurrent();
字符串myValue=currentNode.GetProperty(this.\u detailsProperty).Value;
lblProductDetails.Text=myValue;
}
希望有帮助

Name (Alias) [Type]

Product (product) [Document Type]
  - Product Details (productDetails) [Property]
  - Product Template (productTemplate) [Default Template]

Event (event) [Document Type]
  - Event Details (eventDetails) [Property]
  - Event Template (eventTemplate) [Default Template]