.NET usercontrol代码未在XSLT Umbraco宏内部呈现
我有一个XSLT宏,它在循环中呈现一些标记和.NET usercontrol宏。这就是xslt宏中的多个usercontrol宏:.NET usercontrol代码未在XSLT Umbraco宏内部呈现,xslt,user-controls,umbraco,Xslt,User Controls,Umbraco,我有一个XSLT宏,它在循环中呈现一些标记和.NET usercontrol宏。这就是xslt宏中的多个usercontrol宏: <xsl:for-each select="$node/* [@isDoc]"> //Some markup etc... <xsl:value-of select="umbraco.library:RenderMacroContent('<?UMBRACO_MACRO NodeId="@id"
<xsl:for-each select="$node/* [@isDoc]">
//Some markup etc...
<xsl:value-of select="umbraco.library:RenderMacroContent('<?UMBRACO_MACRO NodeId="@id" macroAlias="LogTag"></?UMBRACO_MACRO>', @id)" disable-output-escaping="yes"/>
</xsl:for-each>
和代码隐藏:
public int NodeId { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)return;
var tools = new Tools();
var userId = (Int32)Membership.GetUser().ProviderUserKey;
Tag.Visible = tools.GetLog(NodeId, userId);
Response.Write("Node=" + NodeId + " - User=" + userId + "<br />");
}
public int NodeId{get;set;}
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(IsPostBack)返回;
var tools=新工具();
var userId=(Int32)Membership.GetUser().ProviderUserKey;
Tag.Visible=tools.GetLog(NodeId,userId);
响应。写入(“Node=“+NodeId+”-User=“+userId+”
);
}
Response.Write或Tag.Visible都不工作。我已经试着直接在空白的屏幕上测试usercontrol宏-效果很好!这是不可能的,还是我做错了什么?不幸的是,由于XSLT宏的性质以及在页面生命周期中调用呈现事件的位置,这意味着library.rendermacontent()方法在XSLT内部无法工作 这里讨论了一个用于创建“小部件”功能的变通方法,如果这是您想要的。这使用ASP.NET中继器,在页面周期的正确阶段注入usercontrol,以允许usercontrol宏工作。否则,请使用Umbraco 4.7及更高版本中的宏容器数据类型,该数据类型允许在Umbraco backoffice中使用宏的拖放功能,并且可以使用
标记成功呈现(usercontrols、Razor或XSLT)
public int NodeId { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)return;
var tools = new Tools();
var userId = (Int32)Membership.GetUser().ProviderUserKey;
Tag.Visible = tools.GetLog(NodeId, userId);
Response.Write("Node=" + NodeId + " - User=" + userId + "<br />");
}