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

发布于 2024-12-04 02:40:56 字数 804 浏览 0 评论 0原文

我在 umbraco 中创建了一个文档类型,它具有以下属性之一:

属性 - 案例研究链接

数据类型 - 内容选择器

我需要在 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()函数的

<a href="@item.caseStudyLink">Read case study</a> 

下输出节点id,并且它工作正常(输出1088)。结果是这样的:

<a href="/1088">Read case study</a> 

但是当我放回 NiceURL() 函数时,它又卡住了。

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

I have created a doctype in umbraco which has one of the following property:

Property - Case study link

Datatype - Content picker

I need to fetch the URL of this document in a Razor macro and assign it to a hyperlink.

Currently am doing it in this way but it's giving me an error:

@foreach (var item in @Model.OurWork){

          <a href="@umbraco.library.NiceUrl(item.caseStudyLink)">Read case study</a>               
}

And here is the error I get on viewing the page:

Error loading Razor Script OurWorkGrid.cshtml The best overloaded
method match for 'umbraco.library.NiceUrl(int)' has some invalid
arguments

I have tried outputting the node id without using the niceURL() function and it works fine (outputs 1088).

<a href="@item.caseStudyLink">Read case study</a> 

results in this:

<a href="/1088">Read case study</a> 

But as soon as I put back NiceURL() function, it chokes again.

I really don't know what am I doing wrong here!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜清冷一曲。 2024-12-11 02:40:56

不要使用 umbraco 库方法,而是尝试先加载具有 ID 的节点,然后使用 Url 属性获取良好的 URL。

@foreach (var item in @Model.OurWork){
    var caseStudyNode = @Model.NodeById(item.caseStudyLink);
    <a href="@caseStudyNode.Url">Read case study</a>               
}

另外,添加某种形式的检查以确保设置该值,以防它不是文档类型的强制属性。这是一个例子:

if (@item.HasProperty("caseStudyLink") && !string.IsNullOrEmpty(@item.caseStudyLink))
{
    ...
}

Instead of using the umbraco library method, try loading the node with the ID first, and then using the Url property to get the nice URL.

@foreach (var item in @Model.OurWork){
    var caseStudyNode = @Model.NodeById(item.caseStudyLink);
    <a href="@caseStudyNode.Url">Read case study</a>               
}

Also, add some form of a check to make sure the value is set, in case it's not a mandatory property on the doc type. Here's one example:

if (@item.HasProperty("caseStudyLink") && !string.IsNullOrEmpty(@item.caseStudyLink))
{
    ...
}
莳間冲淡了誓言ζ 2024-12-11 02:40:56

尝试如下操作:

@foreach (var item in @Model.OurWork){

      <a href="@Model.NodeById(item.caseStudyLink).NiceUrl">Read case study</a>               
}

您可能需要首先检查 item.caseStudyLink 是否包含值,否则会引发错误。

Try something like:

@foreach (var item in @Model.OurWork){

      <a href="@Model.NodeById(item.caseStudyLink).NiceUrl">Read case study</a>               
}

You may want to check first whether item.caseStudyLink contains a value because this will throw an error otherwise.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文