I'm just digging in to .NET views with the razor syntax. Most of my coding knowledge is in javascript so this is probably a basic question (or my approach is completely wrong!). In my html, I am building dns prefetch tags based on an array declared at the top of template. Maybe I am approaching this wrong because of my javascript background, but if one of my views doesn't need any pre-fetch tags, I'd like to avoid declaring the DNSPrefetch variable.
How can I test if a variable exists, and then execute some code based on the result? I got it to work using a try/catch, but was thinking that there is a better way. Thanks!
In _Layout (working with try/catch):
@{
try {
foreach (var dns in ViewBag.DNSPrefetch) {
<link rel="dns-prefetch" href="//@dns" />
}
}
catch{}
}
In template:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
// DNS prefetching for improved performance. More reading: http://html5boilerplate.com/docs/DNS-Prefetching/
string[] DNSArray = { "ajax.googleapis.com", "mpsnare.iesnare.com" };
ViewBag.DNSPrefetch = DNSArray;
}
You can just check if the value is null:
@{
if (ViewBag.DNSPrefetch != null) {
foreach (var dns in ViewBag.DNSPrefetch) {
<link rel="dns-prefetch" href="//@dns" />
}
}
}
(Alternatively, you could declare DNSArray as an empty array when it's not needed, then you could use the foreach block as-is for all cases.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With