扩展-->为ASP.NET 2.0菜单控件(menu, repeater)增加target属性

asp.net中sitemap中的菜单节点在点击后,默认是在本页面打开连接, 就是说a的target是_self, 现在想要有一些节点实现target=_blank的效果,  想了一下, sitemap既然是xml的,应该可自定义属性的, 所以自定义了一个target属性--<siteMapNode url="~/a.aspx" target="_blank" title="aaa"  description="" />, 在repeater绑定里<a href='<%# Eval("url")%>' target='<%# Eval("target")%>'>, 发现是不可行的, 微软内置读sitemap的类里是不可读取sitemap自定议属性的,

突然发现有description属性没有用上,就用这个吧<siteMapNode url="~/a.aspx"  title="aaa"  description="_blank" /> 绑定: <a href='<%# Eval("url")%>' target='<%# Eval("description")%>'>,发现这种方式真的可行.

到网上看一下别人怎么做的, 搜了一下,发现一篇文章, http://www.wangchao.net.cn/bbsdetail_545376.html 里头是这样实现的

首先在sitemap文件添加自己定义属性,这里我们用 target <siteMapNode title="首页" description="" target="_blank" url="~/Default.aspx" /> 然后为 Menu 控件添加 MenuItemDataBound 事件处理代码
  protected void MyMenu_MenuItemDataBound(object sender, MenuEventArgs e)
  {
  string target = ((SiteMapNode)e.Item.DataItem)["target"];
  if (target != null && target.Length > 0) e.Item.Target = target;
  }

 

有样学样,我也这样做,虽然我用的是repeater,

sitemapnode这样写<siteMapNode url="/a.aspx" target="_blank"  title="test"  description="" />

绑定代码是<a href='<%# Eval("url")%>'>

后台在repeater的事件中这样写

         protected void repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            //set CEO link as a new open form
            string target = ((SiteMapNode)e.Item.DataItem)["target"];
            if (target != null && target.Length > 0)
            {
                string tempString = "";
                if (e.Item.HasControls())
                {
                    //get original control
                    System.Web.UI.DataBoundLiteralControl originControl;
                    originControl = e.Item.Controls[0] as System.Web.UI.DataBoundLiteralControl;

                    //define a new control
                    System.Web.UI.DataBoundLiteralControl tempControl = new DataBoundLiteralControl(1, 1);;
                    //use old control's source string, and add target
                    tempString = originControl.Text.Replace("<a href=", "<a target='_blank' href=");
                    tempControl.SetDataBoundString(0, tempString);
                    //tempControl.SetStaticString(0, tempString);

                    e.Item.Controls.Add(tempControl);
                    e.Item.Controls.Remove(originControl);
                }
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值