umbraco.library.NiceUrl()在传递内容节点ID时返回错误

时间:2011-09-13 10:24:38

标签: macros razor umbraco

我在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()函数,它就会再次窒息。

我真的不知道我在这里做错了什么!

2 个答案:

答案 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是否包含值,否则会引发错误。