使用列表

时间:2015-12-08 16:46:26

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

我已使用此link在我正在制作的信息中心上应用部分刷新。

我现在要弄清楚的是如何让它通过列表而不是随机化。我相信我必须找到一种方法来反复发送模型列表的ID值,以便将其递增1。

**问题是如何使网站按顺序迭代模型列表而不是随机。

任何帮助都会非常棒!谢谢!

2 个答案:

答案 0 :(得分:1)

在您的示例中,Model定义为

  public class  Model    
    {
         public int ID { get; set; }
         public string Name { get; set; }
         public string ImageUrl { get; set; }
    }

哪个已有标识符。因此,要将此标识符从客户端发送到服务器端,您应该在表单中定义变量。因此,您应该将部分视图更改为

@model  PartailViewAutoRefresh.Models.Model
@Html.HiddenFor(model => model.ID)
<img src="@Model.ImageUrl" alt="@Model.Name" title="@Model.Name" width="150px" height="150px"/>

现在应该调用ajax作为

<script type="text/javascript">
    $(function () {
         var contributorId = $("#ID").val();
         setInterval(function () { $('#contributors').load('@Url.Action("GetContributor", "Home" })?id='contributorId); }, 3000); // every 3 sec
    });
</script>

服务器应将操作更改为

  public ActionResult GetContributor(int id)

你可以从你的例子中做出很少的改变 1.您应该将GetContributor更改为HttpPost

[HttpPost]
public ActionResult GetContributor(int id)   
  1. 而不是调用HttpGet操作的.load方法,所以为了安全性,你应该把它改成HttpPost;从客户端使用$ .ajax或$ .post。
  2.       setInterval(function () { $.ajax({
              url: "@Url.Action("GetContributor", "Home"),
              method: "POST",
              data: { id : contributorId  },
              dataType: "html",
              success : function(data) {
                  $('#contributors').html(data);
              }
            });
        }, 3000); 
       });

答案 1 :(得分:0)

您的View with PartialView,必须通过按钮点击更新:

<div class="target">
    @{ Html.RenderAction("UpdatePoints");}
</div>

有一些方法可以做到这一点。例如,您可以使用jQuery:

<script type="text/javascript">
    $(function(){    
        $('.button')click(function(){        
            $.post('@Url.Action("PostActionToUpdatePoints", "Home")').always(function(){
                $('.traget').Load('/Home/UpdatePoints');        
            })        
        });
    });        
</script>

PostActionToUpdatePoints是具有[HttpPost]属性的Action,用于更新点

如果您在动作UpdatePoints()中使用逻辑来更新点,可能您忘记为其添加[HttpPost]属性:

[HttpPost]
public ActionResult UpdatePoints()
{    
    ViewBag.points =  _Repository.Points;
    return PartialView("UpdatePoints");
}

链接:see here