2

我正在使用 response.redirect 来保存 url,它在同一页面上打开链接,还有什么可以在新标签中打开链接?

public partial class DocumentLink : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
            try
            {
                Sitecore.Data.Fields.LinkField linkField = SitecoreItem.CurrentItem.Fields["DocumentLink"];
                Response.Redirect(GetUrl(linkField));
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error(ex.ToString(), this);
            }
        }
    }

    public string GetUrl(Sitecore.Data.Fields.LinkField LinkField)
    {
        try
        {
            string url = "";
            switch (LinkField.LinkType)
            {
                case "internal":
                case "external":
                case "mailto":
                case "anchor":
                case "javascript":
                    url = LinkField.Url;
                    break;
                case "media":
                    MediaItem media = new MediaItem(LinkField.TargetItem);
                    url = Sitecore.StringUtil.EnsurePrefix('/', MediaManager.GetMediaUrl(media));
                    break;
                case "":
                default:
                    break;
            }

            return url;
        }
        catch (Exception ex)
        {
            Sitecore.Diagnostics.Log.Error(ex.ToString(), this);
            throw;
        }
    }
}
4

3 回答 3

1

为什么需要重定向?您是否不在页面上呈现指向文档的链接?

如果是这样,我只需向链接添加一个 css 类并使用一些 jQuery 使所有这些链接在新窗口中打开。

使用 jQuery 在新窗口中打开链接

$(document).ready(function(){
    $('.external-link').click(function(event){
        event.preventDefault();
        window.open(this.href);
    });
});

请注意,您不能强制链接在新选项卡中打开,这取决于用户是否希望新窗口在选项卡中打开的偏好。

于 2013-04-04T14:28:16.600 回答
1

您需要执行 javascript 代码才能打开一个新选项卡。这可以使用以下代码执行:

ClientScript.RegisterStartupScript(
    this.GetType(), 
    "newTab" + DateTime.Now.Ticks, 
    String.Format("<script>window.open('{0}');</script>", GetUrl(linkField)));

在这里,您可以找到有关动态添加客户端脚本的更多信息http://msdn.microsoft.com/en-us/library/ms178207.aspx

请记住,浏览器可能会阻止新窗口。

于 2013-04-04T13:44:58.297 回答
0

您可以使用 Sitecore 的链接 webcontrol 并将字段名称传递给它,Sitecore 将自动呈现您的 GenralLinkField 的所有属性

<sc:Link runat="server"  Field="DocumentLink">
于 2013-04-06T19:54:11.620 回答