@using Umbraco.Web.Models;
@inherits Umbraco.Web.Mvc.UmbracoViewPage<IEnumerable<IPublishedContent>>
<div class="row add-lg-marg-tb">
@{
foreach (IPublishedContent advert in Model.Where(x => x.IsVisible()))
{
string advertTitle = advert.GetPropertyValue<string>("title");
string advertDesc = advert.GetPropertyValue<string>("description");
string imageUrl = advert.HasValue("image") ? advert.GetPropertyValue<IPublishedContent>("image").Url : "media/1016/advert-crimestoppers-newlogo.jpg";
string altText = "Descriptive image";
//look for the type RelatedLink within imageLinks and refer to them as links
IEnumerable<RelatedLink> links = advert.GetPropertyValue<IEnumerable<RelatedLink>>("imageLink");
//if RelatedLink has a reference link and is not empty, if is empty leave blank (return null)
RelatedLink link = links != null ? links.FirstOrDefault() : null;
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-4 add-lg-marg-b">
<div class="card">
<img class="card-img-top" src="@imageUrl" alt="@altText" data-holder-rendered="true">
<div class="card-body">
<h3 class="card-title">@advertTitle</h3>
<p>@advertDesc</p>
<p><a class="btn btn-primary btn-lg head-button noIcon-only" role="button" target="@(link.NewWindow ? "_self" : null)" href="@link.Link" href="#">@link.Caption</a></p>
</div>
</div>
</div>
}
}
</div>
The error I get is this:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
And the stack line reference is:
<p>@advertDesc</p>
When I comment out the p tag where I would like the link to appear all is displayed as it should be apart form the link that I commented out.
I really don't understand. When I comment out all code apart from the link code it returns an error:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
and it complains about:
RelatedLink link = links != null ? links.FirstOrDefault() : null;
And if I comment that line out as I think it just checks to make sure there is a link the error message I get is related to the p tag and it says 'link' does not exist.
I've used the same code on a Carousal from this tutorial (thank you brillaint :)) and it worked fine in that.
sorry for the long post but I find it very helpful for all references shown when I read other's posts.
Thank you for taking a look - learning something new every day.
I was missing the logic that only one content container had all its content in, including a link. The other containers were empty which is why they showed the default image when I commented out the link code, and not an error message.
The link container needs checking because it could have more than one link in it, because it is a list element or an IEnumerable, so the code checks can't find any links for container two and throws a null error.
I could make the links content document type mandatory or add an else statement to say no link don't display p tag, which is probably the best thing to do.
Thanks again
I have updated my code to:
@using Umbraco.Web.Models;
@inherits Umbraco.Web.Mvc.UmbracoViewPage<>
<div class="row add-lg-marg-tb">
@{
foreach (IPublishedContent advert in Model.Where(x => x.IsVisible()))
{
string advertTitle = advert.GetPropertyValue<string>("title");
string advertDesc = advert.GetPropertyValue<string>("description");
string imageUrl = advert.HasValue("image") ? advert.GetPropertyValue<IPublishedContent>("image").Url : "media/1016/advert-crimestoppers-newlogo.jpg";
string altText = "Descriptive image";
//look for the type RelatedLink within imageLinks and refer to them as links
IEnumerable<RelatedLink> links = advert.GetPropertyValue<IEnumerable<RelatedLink>>("imageLink");
if (links != null)
{
//if RelatedLink has a reference link and is not empty, if is empty leave blank (return null)
RelatedLink link = links.FirstOrDefault();
if (link != null)
{
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-4 add-lg-marg-b">
<div class="card">
<img class="card-img-top" src="@imageUrl" alt="@altText" data-holder-rendered="true">
<div class="card-body">
<h3 class="card-title">@advertTitle</h3>
<p>@advertDesc</p>
<p><a class="btn btn-primary btn-lg head-button noIcon-only" role="button" target="@(link.NewWindow ? "_self" : null)" href="@link.Link" href="#">@link.Caption</a></p>
</div>
</div>
</div>
}
}
else
{
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-4 add-lg-marg-b">
<div class="card">
<img class="card-img-top" src="@imageUrl" alt="@altText" data-holder-rendered="true">
<div class="card-body">
<h3 class="card-title">@advertTitle</h3>
<p>@advertDesc</p>
</div>
</div>
</div>
}
}
}
</div>
RealtedLinks Umbraco 7.7
Hi, I'm not a coder, I'm a designer - I copy and paste code in from other sites and then try and tweak to make it work!
And I can't get the related links bit to work.
I have a partial which is linked to from the homepage of the site: -
and I have a partial which is: -
The error I get is this:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
And the stack line reference is:
When I comment out the p tag where I would like the link to appear all is displayed as it should be apart form the link that I commented out.
I really don't understand. When I comment out all code apart from the link code it returns an error:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
and it complains about:
And if I comment that line out as I think it just checks to make sure there is a link the error message I get is related to the p tag and it says 'link' does not exist.
I've used the same code on a Carousal from this tutorial (thank you brillaint :)) and it worked fine in that.
sorry for the long post but I find it very helpful for all references shown when I read other's posts.
Thank you for taking a look - learning something new every day.
Hi Karen
Add please a check for a null like that:
Thank you Alex. That was it.
I was missing the logic that only one content container had all its content in, including a link. The other containers were empty which is why they showed the default image when I commented out the link code, and not an error message.
The link container needs checking because it could have more than one link in it, because it is a list element or an IEnumerable, so the code checks can't find any links for container two and throws a null error.
I could make the links content document type mandatory or add an else statement to say no link don't display p tag, which is probably the best thing to do.
Thanks again I have updated my code to:
@inherits Umbraco.Web.Mvc.UmbracoViewPage<>
Thank you :)
You are welcome, Karen
Ask if you have a questions
is working on a reply...