刷新asp.net mvc页面

Ant*_*n Z 2 asp.net-mvc

我在asp.net mvc上有一些应用程序.我正在尝试创建表过滤器.页面非常难,所以我无法从JSON响应中获取数据.我试图通过使用params的调用动作来获取它.

   function refresh() {
        var id = $("#list").val();
        var params = { id: id };
        $.get("/Home/Index", params, null, "json");

    }

<select id="list" onchange="refresh()">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
</select>
<%foreach (var i in (IEnumerable<int>)ViewData["list"])
  { %>
  <%=i %><br />
<%} %>

   public ActionResult Index(int? id)
   {
        if (id == null)
            id = 0;

        ViewData["list"] = Enumerable.Range((int)id, 5).Select(i => i).ToList<int>();

        return View();
   }
Run Code Online (Sandbox Code Playgroud)

但我没有看到新的数据.怎么了?我如何刷新页面?

PS我认为我想从动作A(动作A)到动作A(带有参数)去(重定向).我不想在客户端重建页面

tva*_*son 5

您没有对通过get调用检索的结果执行任何操作.此外,由于您要返回视图,因此应将数据类型设置为html.

 $.get('/Home/Index', params, function(html) {
      $('body').html(html);
  },'html');
Run Code Online (Sandbox Code Playgroud)

我注意到我可能只会替换更新的部分.您可以通过使用部分视图来保存该部分,然后当您通过AJAX获取请求时,您只能返回部分视图而不是完整视图.我要做的另一件事是将视图强类型化IEnumerable<int>并传递模型,而不是使用视图数据.

视图

<script type="text/javascript">
    $(function() {
        $('#list').change( function() {
            var id = $("#list").val();
            var params = { id: id };
            $.get("/Home/Index", params, function(html) {
                 $('#listResults').replaceWith(html)
            }, "html");
        });
    });
</script>

<select id="list">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
</select>
<% Html.RenderPartial( "ListResults" ); %>
Run Code Online (Sandbox Code Playgroud)

局部视图

<div id="listResults">
<%foreach (var i in Model)
  { %>
  <%=i %><br />
<%} %>
</div>
Run Code Online (Sandbox Code Playgroud)

行动

public ActionResult Index(int? id)
{
    if (id == null)
        id = 0;

    var model = Enumerable.Range((int)id, 5).Select(i => i).ToList<int>();
    if (this.Request.IsAjaxRequest())
    {
        return PartialView(model);
    }
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)