【问题标题】:Scheduler in asp.net to fetch data from websiteasp.net 中的调度程序从网站获取数据
【发布时间】:2018-02-13 14:20:27
【问题描述】:

我编写了一个从网站获取新闻的代码。 该代码包括 UI 页面,我在其中插入网站名称(从中获取数据)和按钮单击事件,它获取新闻。

代码如下:

<form runat="server" style="margin-left:10px;">
    <br /><br />
    <asp:TextBox ID="txtSiteName" runat="server"></asp:TextBox>    <asp:Button ID="btnSubmit" runat="server" Text="Get News"  OnClick="btnSubmit_Click"/><br /><br /><br />
    <h3>Here are the latest news</h3><br />
    <div style="max-height: 350px; overflow: auto">
        <asp:GridView ID="gvRss" runat="server" AutoGenerateColumns="false" ShowHeader="false" Width="90%">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <table width="100%" border="0" cellpadding="0" cellspacing="5">
                            <tr>
                                <td>
                                    <asp:CheckBox ID="cbxAddNews" runat="server" />
                                </td>
                                <td>
                                    <h3 style="color: #3E7CFF"><%#Eval("Title") %></h3>
                                </td>
                                <td width="200px">
                                    <%#Eval("PublishDate") %>
                                </td>
                            </tr>
                            <tr>
                                <td colspan="2">
                                    <hr />
                                    <%#Eval("Description") %>
                                </td>
                            </tr>
                            <tr>
                                <td>&nbsp;</td>
                                <td align="right">
                                    <a href='<%#Eval("Link") %>' target="_blank">Read More...</a>
                                </td>
                            </tr>
                        </table>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
</form>

代码如下:

public class Feeds
{
    public string Title { get; set; }
    public string Link { get; set; }
    public string PublishDate { get; set; }
    public string Description { get; set; }
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
    PopulateRssFeed();
}

private void PopulateRssFeed()
{
    //string RssFeedUrl = "https://realty.economictimes.indiatimes.com/rss/topstories";
    string RssFeedUrl = txtSiteName.Text;
    List<Feeds> feeds = new List<Feeds>();
    try
    {
        XDocument xDoc = new XDocument();
        xDoc = XDocument.Load(RssFeedUrl);
        var items = (from x in xDoc.Descendants("item")
                     select new
                     {
                         title = x.Element("title").Value,
                         link = x.Element("link").Value,
                         pubDate = x.Element("pubDate").Value,
                         description = x.Element("description").Value
                     });
        if (items != null)
        {
            foreach (var i in items)
            {
                Feeds f = new Feeds
                {
                    Title = i.title,
                    Link = i.link,
                    PublishDate = i.pubDate,
                    Description = i.description
                };

                feeds.Add(f);
            }
        }

        gvRss.DataSource = feeds;
        gvRss.DataBind();
    }
    catch (Exception ex)
    {
        throw;
    }
}

它的作用是在按钮点击事件中从一个特定网站获取所有新闻。

但我想使用调度程序实现相同的功能! (想消除按钮单击事件!) 由于我以前没有使用过调度器,任何人都可以帮助我或提供任何关于如何使用调度器从多个网站获取数据(新闻)并将其存储在数据库表中而不是直接显示它们的建议吗??

【问题讨论】:

    标签: c# asp.net scheduler


    【解决方案1】:

    在客户端使用setInterval(expression, timeout);

    1) 在您的网页上创建一个 WebMethod。

    [WebMethod]
    public static void UpdateNews()
    {
        PopulateRssFeed();
    }
    

    2) 在客户端创建一个方法,以便使用 Ajax 调用该 WebMethod。

    var updateNews = function(){ $.ajax({ type: "POST", url:"YourWebpage.aspx/UpdateNews", contentType: "application/json; charset=utf-8" });}
    

    3) 使用SetInterval 并调用您的客户端ajax 方法

    setInterval(updateNews(), 5000);//every 5 second
    

    【讨论】:

    • 所以基本上它会像buttonClick事件会在所述间隔时间自动触发?
    • 我没听明白,你能用我的代码解释一下吗?
    • 你的解决方案看起来不错,但是如果在任何特定的日子页面没有打开,那么在这种情况下它会加载数据吗??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多