Skip to main content

Umbraco 7 - Partial View - Get RSS Feed and Check Status Code - C# - Razor

The following script displays an RSS feed from another web site and first cehcks to see if the feed is available.

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@using System.Xml;
@{      
           var rssFeedTitle = @ViewData["RSStitle"];
  var rssFeedURL = @ViewData["RSSURL"];
 }

@{
<h3>@rssFeedTitle</h3>

var request = (HttpWebRequest)WebRequest.Create("https://jobs.gmc-uk.org/rss/rss200_jobs_2965.xml");
request.Method = "HEAD";


try
{
var response = (HttpWebResponse)request.GetResponse();

//Get the XML from remote URL
XmlDocument xml = new XmlDocument();

//URL currently hardcoded - but you could use a macro param to pass in URL
xml.Load("" + @rssFeedURL);


//Select the nodes we want to loop through
//XmlNodeList nodes = xml.SelectNodes("//item[position() <= 3]");
XmlNodeList nodes = xml.SelectNodes("//item");

//Traverse the entire XML nodes.
foreach (XmlNode node in nodes)
{

var title = node.SelectSingleNode("title").InnerText;
var link = node.SelectSingleNode("link").InnerText;

<h2><a href="@link" target="_blank" title="@title">@title</a></h2>

try
{
var description = node.SelectSingleNode("description").InnerText;

if(description.Length > 300)
  {
@Html.Raw(description.Substring(0,300))
  }
  else
  {
  <p>@Html.Raw(@description)</p>
  }
<p><a href="@link" target="_blank" title="@title">View full details</a></p>
}
catch{}

}
}
catch{}
}

------------

This following code should be in your teplate calling the Partial View:

@Html.Partial("RSSFeedGeneric", new ViewDataDictionary{{"RSStitle","GMC Jobs"},{"RSSURL","https://jobs.gmc-uk.org/rss/rss200_jobs_2965.xml"}} )

Comments

Popular posts from this blog

Umbraco 7 - C# Razor - Passing a parameter variable from a Template to a Partial View.

Passing a parameter variable from a Template to a Partial View Example - Passing a Page Id to a Partial View.
In the example below we are passing 3 page Ids (1090. 1091, 1092) to a partial view.  The Partial View will display the details for each of these nodes on a home page.  See final output below.


1) In your Template:
@Html.Partial("HomePageLinksToLandingPages", new ViewDataDictionary{{ "pageId", 1090}}) @Html.Partial("HomePageLinksToLandingPages", new ViewDataDictionary{{ "pageId", 1091}}) @Html.Partial("HomePageLinksToLandingPages", new ViewDataDictionary{{ "pageId", 1092}})

2) The Partial View:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage @{ var thisPageId = 1090; var stringPage = @ViewData["pageId"]; thisPageId = Convert.ToInt32(stringPage); } <div class="col-md-4"> <article class="common-blog-pos…

Umbraco 7 Hide a page from Navigation or Sub Navigation with umbracoNaviHide using Razor in a template or partial view

How to Allow the user to Hide a Page from Navigation in Umbraco 7. By using a tick box:
This example shows hide the Search Results page from the main navigation in umbraco 7.


1)  In your Document Type add a property called "umbracoNaviHide", it must be called "umbracoNaviHide"

The property should be a tick box, so it should be a "True/False "



2) In your Navigation, add the highlighted code to your for each loop that writes out the navigation:

  @foreach(var p in homePage.Children().Where("visible"))
                        {
                            write out navigation

3) Now when the user ticks Hide from Nav in the backend, the page will not show in the navigation:


Umbraco Razor Sort Nodes Ascending or Descending

Descending:
@inherits umbraco.MacroEngines.DynamicNodeContext  
@using umbraco.cms.businesslogic.template;

@foreach(var item in Model.Children.OrderBy("Name descending"))
{
if(item.HasAccess())
{
@item.Name 
}
}


Ascending:
@inherits umbraco.MacroEngines.DynamicNodeContext  
@using umbraco.cms.businesslogic.template;

@foreach(var item in Model.Children.OrderBy("Name"))
{
if(item.HasAccess())
{
@item.Name 
}
}