我在umbraco中创建了一个doctype,它具有以下属性之一:
财产 - 案例研究链接
数据类型 - 内容选择器
我需要在Razor宏中获取此文档的URL并将其指定给超链接。
目前正在以这种方式进行,但它给了我一个错误:
@foreach (var item in @Model.OurWork){
<a href="@umbraco.library.NiceUrl(item.caseStudyLink)">Read case study</a>
}
以下是我查看页面时出现的错误:
加载Razor脚本时出错OurWorkGrid.cshtml最佳重载 'umbraco.library.NiceUrl(int)'的方法匹配有一些无效 参数
我尝试在不使用niceURL()函数的情况下输出节点ID,并且工作正常(输出1088)。
<a href="@item.caseStudyLink">Read case study</a>
结果如下:
<a href="/1088">Read case study</a>
但是一旦我放回NiceURL()函数,它就会再次窒息。
我真的不知道我在这里做错了什么!
答案 0 :(得分:4)
不要使用umbraco库方法,而是先尝试使用ID加载节点,然后使用Url属性获取漂亮的URL。
@foreach (var item in @Model.OurWork){
var caseStudyNode = @Model.NodeById(item.caseStudyLink);
<a href="@caseStudyNode.Url">Read case study</a>
}
此外,添加某种形式的检查以确保设置该值,以防它不是doc类型的强制属性。这是一个例子:
if (@item.HasProperty("caseStudyLink") && !string.IsNullOrEmpty(@item.caseStudyLink))
{
...
}
答案 1 :(得分:1)
尝试类似:
@foreach (var item in @Model.OurWork){
<a href="@Model.NodeById(item.caseStudyLink).NiceUrl">Read case study</a>
}
您可能需要先检查item.caseStudyLink
是否包含值,否则会引发错误。