umbraco.library.NiceUrl () возвращает ошибку при передаче идентификатора узла содержимого - PullRequest
1 голос
/ 13 сентября 2011

Я создал doctype в umbraco, который имеет одно из следующих свойств:

Свойство - Ссылка на конкретное исследование

Тип данных - Содержаниеpicker

Мне нужно получить URL этого документа в макросе Razor и назначить его гиперссылке.

В настоящее время я делаю это таким образом, но выдает ошибку:

@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 (), и он работает нормально (вывод 1088).

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

приводит к этому:

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

Но как только я возвращаю функцию NiceURL (), она снова задыхается.

Я действительно не знаючто я тут не так делаю!

Ответы [ 2 ]

4 голосов
/ 14 сентября 2011

Вместо использования метода библиотеки umbraco попробуйте сначала загрузить узел с идентификатором, а затем с помощью свойства 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))
{
    ...
}
1 голос
/ 14 сентября 2011

Попробуйте что-то вроде:

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

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

Вы можете сначала проверить, содержит ли item.caseStudyLink значение, так как в противном случае будет выдано сообщение об ошибке.

...