macro的参数主要是针对.net macros而言,结合参数我们可以创建更加灵活的.net macros,笔者将参照umbraco官网上提供一个介绍macro参数的例子,来简单介绍下macro参数的使用。
首先创建一个名为DemoParameters的用户控件,控件包括两个属性:DefaultValue和DefaultPageId,DemoParametersControl.aspx的代码如下:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DemoParametersControl.ascx.cs" Inherits="starterKit.DemoParametersControl" %>
<div id="demoParametersContainer">
<div id="demoParametersHeader">
<h1>macro参数使用举例</h1>
</div>
<div id="demoParametersContent">
<span>Default Value: </span>
<asp:Literal ID="litDefaultValue" runat="server"></asp:Literal>
<span>Default Page ID: </span>
<asp:Literal ID="litDefaultPageId" runat="server"></asp:Literal>
</div>
</div>
后台代码DemoParametersControl.aspx.cs的代码如下:
public partial class DemoParametersControl : System.Web.UI.UserControl
{
public string DefaultValue { get; set; }
public int DefaultPageId { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(DefaultValue))
{
litDefaultValue.Text = DefaultValue;
}
else
{
litDefaultValue.Text = "No default value has been passed";
}
if (DefaultPageId > 0)
{
litDefaultPageId.Text = DefaultPageId.ToString();
}
}
}
因为之前已经设置了编译后事件,所以编译成功后,相关文件已经拷贝到站点的相应目录下。创建一个名为Demo Parameters的macro,并设置相应的.net用户控件,如下图所示:
保存后,可以在user control一行下看到Browse Properties按钮,点击该按钮,可以看到用户控件中定义的两个公共属性,对应于macro的的参数,如下图所示:
点击save后,重新加载macro,在Parameters选项卡下可以看到对应的参数已经添加成功。在该选项卡下可以添加和删除参数。可以看到每个参数对应三个属性,分别为别名(Alias)、名称(Name)和类型(Type)。其中别名的命名必须和用户控件中定义的公共属性的命名一致,名称和类型已经给出了默认值,但是可以做相应的改动。改动后如下图所示:
为了测试我们创建的macro,将新创建的macro插入到相应的Template中。选择Home Template,在相应的位置插入macro,选择工具栏中的Insert Macro,选择Demo Parameters后,将弹出设置参数的对话框,设置好相应的参数后,如下图所示:
点确认后,Home Template中插入Demo Parameters Macro的代码段如下:
<umbraco:Macro DefaultValue="测试Macro参数,这里输入的是默认值" DefaultPageId="1151" Alias="DemoParameters" runat="server"></umbraco:Macro>
我们还可以在代码中直接编辑相应的参数值,为了查看效果,打开home页面,如下图所示:
![](https://img-my.csdn.net/uploads/201301/27/1359286458_2878.jpg)
可以看到Demo Parameters Macro添加成功。除了我们设置的参数之外,参数的值也可以为节点的属性值或浏览器中URL中包含的属性值,例如我们把插入的macro的代码修改如下:
<umbraco:Macro DefaultValue="[#pageTitle]" DefaultPageId="[@pid]" Alias="DemoParameters" runat="server"></umbraco:Macro>
在浏览器地址后添加pid属性http://localhost/?pid=345,打开页面可以看到相应的参数值如下图所示:
关于.net macros,笔者就先介绍到这里,接下来几节笔者将介绍xslt macros。