使用DD4T在视图中动态解析组件链接 - 不在使用的富文本字段中ResolveRichText()- 但如果组件A具有组件链接字段,其中包含指向组件B的链接,并且在视图中要发布页面组件B的URL,则会发布该组件链接. ..
在解决方案中没有这方面的帮助 - 是吗?
ASP.NET MVC 3有点生疏,所以纯粹主义者视而不见,但是下面的工作,我只需要创建Html Helper.
@using DD4T.Providers.SDLTridion2011sp1;
@{
var linkFactory = new LinkFactory();
linkFactory.LinkProvider = new TridionLinkProvider();
var link = linkFactory.ResolveLink(Model.Component.Fields["related_link"].LinkedComponentValues[0].Id);
}
Run Code Online (Sandbox Code Playgroud)
虽然有点奇怪,但项目中已经没有帮助了.
干杯
我认为你是对的,这应该在框架中.但幸运的是,添加它很容易.只需使用如下扩展方法创建一个帮助器类:
namespace MyApp.Helpers
{
public static class ModelHelper
{
public static string GetResolvedUrl(this IComponent component)
{
return GetResolvedUrl(component, null, null);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您确保您的视图使用名称空间MyApp.Helpers,则可以在组件视图中执行此操作:
@model DD4T.ContentModel.Component
@using MyApp.Helpers
<a href="@Model.GetResolvedUrl()">click here</a>
Run Code Online (Sandbox Code Playgroud)
我们很可能很快就会将其纳入框架中.
确实没有用于解析链接的HTML帮助程序.主要原因可能是(根据MVC原则)链接应该已经在您的视图呈现的模型中解析.
如果从dd4t.ContentModel项目中签出ContentModel类,则组件的(已注释掉)属性"ResolvedUrl".这从未实现,但它是解决链接的更加合适的地方.但是您的代码可以完成这项工作,因此您可以随意实现自己的HTML帮助程序.
| 归档时间: |
|
| 查看次数: |
1127 次 |
| 最近记录: |