آموزش نحوه خواندن Rss سایت ها با MVC 5
آموزش نحوه خواندن Rss سایت ها با MVC 5
در این آموزش قصد داریم تا نحوه خواندن Rss سایت های دیگر و نمایش اطلاعات آن ها به صورت Html در مرورگر کاربر را مورد بررسی قرار دهیم.
ابتدا یک کلاس به نام RssViewModel داخل پوشه Models ایجاد کنید و پراپرتی های زیر را برا آن تعریف کنید.
با استفاده از این کلاس ما یک مدل از Rss به View ارسال می کنیم.
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MVCRssReader.Models { public class RssViewModel { public string Link { get; set; } public string Title { get; set; } public string Description { get; set; } } }
برای خواند Rss یک کلاس به نام RssReader ایجاد کنید و کدهای زیر را به آن اضافه کنید.
کار این کلاس به این صورت است که یک متد به نام GetRssFeed از نوع IEnumerable از کلاس RssViewModel که در مرحله قبل ایجاد کردیم می باشد. این متد یک آدرس Rss دریافت می کند و اطلاعات Rss را خواند و به صورت IEnumerable از کلاس RssViewModel برای ما برمیگرداند.
using System.Collections.Generic; using System.Linq; using System.Xml.Linq; using System.Text.RegularExpressions; using MVCRssReader.Models; namespace MVCRssReader.Infrastructure { public class RssReader { public static string _blogURL = ""; public static IEnumerable<RssViewModel> GetRssFeed() { XDocument feedXml = XDocument.Load(_blogURL); var feeds = from feed in feedXml.Descendants("item") select new RssViewModel { Title = feed.Element("title").Value, Link = feed.Element("link").Value, Description = Regex.Match(feed.Element("description").Value, @"^.{1,180}\b(?<!\s)").Value }; return feeds; } } }
حالا یک اکشن ریزالت در هر کنترلی که مد نظر دارید ایجاد کنید و کدهای زیر به آن اضافه کنید.
کدهای زیر یک آدرس Rss را به کلاس RssReader ارسال می کند و اطلاعات آن را خواند و به صورت یک IEnumerable از کلاس RssViewModel بر می گرداند.
public ActionResult Index() { RssReader._blogURL = "http://iranganj.com/rss"; return View(RssReader.GetRssFeed()); }
حال برای مشاهده خروجی یک View برای اکش ریزالت مربوطه ایجاد کنید و کدهای زیر را به آن اضافه کنید.
در کدهای زیر با استفاده از یک Foreach اطلاعات دریافتی را در مرورگر نمایش دادیم.
@model IEnumerable<MVCRssReader.Models.RssViewModel> @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> @if (Model.Any()) { <ul class="posts"> @foreach (var item in Model) { <li> <i class=" fa fa-file-text-o" style="color: #A7C700;font-size: 16px;padding-left: 5px;"></i> <a class="font-Samim" style="text-decoration: none; color: #428bca; font-size: 14px;" href="@item.Link" target="_blank"> @item.Title </a> </li> } </ul> <p></p> } </body> </html>
با استفاده از این روش که توضیح دادیم شما می توانید تمام Rss های سایت ها را بخوانید و به هر نحوه و ترتیبی که دوست دارید آن ها را نمایش دهید.
نظر / سوال