如何从mvc4中的操作返回的列表中重复填充数据?

时间:2016-08-02 08:17:40

标签: c# jquery asp.net asp.net-mvc-4 razor

我是一个新手,我在阅读数据时遇到问题,我希望从数据库中获取数据并希望在一个范围内显示。我的问题是,我已经将数据带入控制器,但现在我想在视图中显示该数据。我能够从列表中访问特定数据,但我想以重复模式显示数据,就像新闻一样。 我的控制器部分在这里给出

 public ActionResult Index()
        {
            List<Quote> quote = dbContext.quotes.ToList();                
            return View(quote);                
        }

查看部分

<blockquote> 
       @foreach 
        (var items in @Model) 
        { 
             @items.quote 
        } 
</blockquote>

我应该在这里实现什么逻辑来在重复模式下获取数据,这样我每小时都可以引用数据。

2 个答案:

答案 0 :(得分:1)

您可以在javascript中使用location.reload();,它会每小时重新加载您的网页并获取最新消息:

@model IEnumerable<MVCTutorial.Models.Quote>

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Quotes</title>
    <script type="text/javascript">
        setInterval(function ()
        {
            location.reload();

        }, 3600000);//3600000 milliseconds = 1 hour
    </script>
</head>
<body>
    <blockquote>
        @foreach(var item in Model)
        {
            <span>@String.Format("{0}-{1}",item.ID,item.QuoteName)</span><br />
        }
    </blockquote>
</body>
</html>

修改

要定期只获取最新项目,您可以使用$.getJSON拨打AJAX电话,并将最新项目附加到列表中。

控制器操作方法:

public JsonResult GetLatestNews()
{
    //Write the query here to get the latest items...
    List<Quote> quotes = dbContext.quotes.ToList();
    return Json(quotes, JsonRequestBehavior.AllowGet);
}

查看:

@model IEnumerable<MVCTutorial.Models.Quote>

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Quotes</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            setInterval(function () {
                $.getJSON("@Url.Action("GetLatestNews","Quote")", function (data) {

                    for(var i = 0;i < data.length;i++){
                        var id = data[i].ID;
                        var quoteName = data[i].QuoteName;

                        var quote = "<span>" + id + "-" + quoteName + "</span><br />";
                        $("#quotes").append(quote);
                    }
                });

            }, 3600000);//3600000 milliseconds = 1 hour
        });
    </script>

</head>
<body>
    <blockquote id="quotes">
        @foreach (var item in @Model)
        {
            <span>@String.Format("{0}-{1}", item.ID, item.QuoteName)</span><br />
        }
    </blockquote>
</body>
</html>

答案 1 :(得分:0)

感谢aniruddhanath,其jquery插件帮助我完成了这个场景。

  

Index.cshtml

<div id="crotator">
        <div id="quotes">
            @foreach (var news in Model)
            {    
                <p>@news.News</p>
            }
        </div>    
        <div id="authors">
            @foreach (var news in Model)
            {

                <p>- @news.Author</p>
            }    
        </div>    
    </div>
  

脚本块

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://www.jqueryscript.net/demo/Simple-jQuery-Content-Rotator-Plugin-Crotator/js/jquery-crotator.js"></script>
<script>
    $("#quotes").crotator({
        // optional changes
        timeofExistence: 5000,
        typeofTag: "<h3/>",
        tagClass: "quotes"
    });
    $("#authors").crotator({
        // optional changes
        timeofExistence: 5000,
        typeofTag: "<h4/>",
        tagClass: "authors"
    });
</script>