نویسار

یادداشت های یک برنامه نویس وب

نویسار

یادداشت های یک برنامه نویس وب

نویسار

اینجا صرفا محلی برای یاداشتها و بیان تجربه های شخصی صاحب وبلاگ می باشد.

پیوندهای روزانه

۱ مطلب با کلمه‌ی کلیدی «خواندن فید در asp.net mvc» ثبت شده است

در این پست قصد دارم نحوه خواندن RSS ها یا به اصطلاح فارسی "خوراک" سایت ها رو آموزش بدم.

من اینکار رو در MVC انجام می دم اما با کمی تغییر می شه اونها رو در WebForm هم مورد استفاده قرار داد.

ابتدا یک کلاس جدید با نام مثلا BlogModel به قسمت Model خودتون اضافه کنید و بعد یک خصوصیت از نوع SyndicationFeed و با نام BlogFeed برای اون می سازیم.

    public class BlogModel
    {
        public SyndicationFeed BlogFeed { get; set; }
    }

این کلاس در System.ServiceModel.Syndication قرار دارد و به ما امکان کار کردن با RSS و یا Atom رو در قالب یک سری خصوصیت ها می دهد.

در زیر برخی از خصوصیات آورده شده است که اینها در کلاس SyndicationItem موجود هستند:

  • Id
  • Authors
  • Categories
  • Contributors
  • Copyright
  • Description
  • Generator
  • ImageUrl
  • Language
  • LastUpdatedTime
  • Links
  • Title

فقط در استفاده از این خصوصیت های متوجه این نکته باشید که ممکن است هر کدام از این خصوصیت ها null باشند.

یک کنترل جدید با نام Home بسازید و ارجاع های System.ServiceModel.Syndication و همچنین System.Xml رو به اون اضافه کنید. 

        public ActionResult Index()
        {
            var model = new BlogModel();
            const string strFeed = "http://webdeveloper.blog.ir/rss";
            try
            {
                using (XmlReader reader = XmlReader.Create(strFeed))
                {
                    SyndicationFeed rssData = SyndicationFeed.Load(reader);
                    model.BlogFeed = rssData;
                }
            }
            catch (System.Net.WebException)
            {
                return Content("Error in Reading RSS Feed");
            }
            return View(model);
        }

حالا باید کدهای نمایش فید ها رو در قسمت View بنویسیم. که در اینجا من با یک حلقه اونها رو خوانده و 5 لینک جدیدتر رو نمایش میدم.

    <div>
        @if (@Model.BlogFeed != null)
        {
            <ul>
                @foreach (SyndicationItem post in Model.BlogFeed.Items.ToList().Take(5))
                {
                    <li>
                        <a href='@post.Links.First().Uri'>
                            @post.Title.Text
                        </a>
                    </li>
                }
            </ul>
        }
    </div>

که در View خودتون شی مدل رو باید برابر Models.BlogModel قرار بدید و یک ارجاع هم به کلاس System.ServiceModel.Syndication جهت دسترسی به Intelisense ویژوال استودیو برای مشاهده خصوصیت های شی post بدهید.

اینجا و اینجا می تونید اطلاعات بیشتری رو درباره کلاس SyndicationFeed بدست بیارید و اینجا هم یک آموزش خوب دیگر در همین رابطه موجود است.

۵ نظر موافقین ۳ مخالفین ۰ ۲۲ مرداد ۹۲ ، ۱۱:۴۱
محمد رعیت پیشه