MVC 4部分视图刷新列表

本文关键字:刷新 列表 视图 4部 MVC | 更新日期: 2023-09-27 18:26:12

我使用此链接对我制作的仪表板进行了部分刷新。

我现在想弄清楚的是如何使它通过列表而不是随机化。我相信我必须找到一种方法来来回发送我为模型列表所拥有的ID值,以便将其增加一。

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

任何帮助都会很棒,谢谢!

MVC 4部分视图刷新列表

在您的示例中,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. 为了安全起见,您应该将其更改为HttpPost,而不是调用HttpGet操作的.load方法;从客户端使用$.ajax或$.post

      setInterval(function () { $.ajax({
          url: "@Url.Action("GetContributor", "Home"),
          method: "POST",
          data: { id : contributorId  },
          dataType: "html",
          success : function(data) {
              $('#contributors').html(data);
          }
        });
    }, 3000); 
   });

您有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");
}

链接:请参阅此处