Dav*_*ers 3 asp.net-mvc sitecore glass-mapper sitecore8
我有以下几点:
<a href="@Model.Link.Url">
Run Code Online (Sandbox Code Playgroud)
其中链接是玻璃链接属性:
public virtual Link Link { get; set; }
Run Code Online (Sandbox Code Playgroud)
问题在于目标页面仅将访问权限限制为登录用户。Glass / sitecore似乎足够聪明,可以意识到这一点,并且不会渲染网址。而是呈现当前的URL,而不是“ currenturl / edit”。
问题在于,当未经身份验证的用户单击链接时,我希望它将其带到登录页面,一旦登录,它将把他们重定向到他们最初想要的受限页面。但是,由于未呈现正确的url,因此不会调用此过程。
无论权限如何,如何获取它以呈现Url?
是的,Sitecore默认情况下会这样做。我前一段时间实际上遇到了这种情况:https : //sdn.sitecore.net/SDN5/Forum/ShowPost.aspx?PostID=62876
我记得我最终重写了SitecoreFieldLinkMapper并更改了它:
if (linkField.TargetItem == null) link.Url = string.Empty;
else link.Url = LinkManager.GetItemUrl(linkField.TargetItem, urlOptions);
Run Code Online (Sandbox Code Playgroud)
对此:
Item targetItem = null;
using (new SecurityDisabler())
{
targetItem = linkField.TargetItem;
}
if (targetItem == null) link.Url = string.Empty;
else link.Url = LinkManager.GetItemUrl(targetItem, urlOptions);
Run Code Online (Sandbox Code Playgroud)
现在,我很“幸运”的是,架构师已将Glass的全部资源都包含在解决方案中。因此,我只需要更改原始的映射器。但是,如果必须再次执行此操作,则可以扩展原始映射器并在启动时进行注册。您可以在这里找到一个示例:http : //glass.lu/Mapper/Sc/Tutorials/Tutorial19
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |