当前位置: 首页 > 面试题库 >

具有部分视图的AJAX页面列表

仉联
2023-03-14
问题内容

我不太清楚如何使用ajax获取部分视图以呈现页面列表。

我最接近使用的)是来自在部分视图中使用分页的示例,asp.netmvc

我基本上是在尝试创建一个包含每个用户评论列表的页面,该页面可以按照与stackoverflow用户页面上的“答案”选项卡相同的方式进行更改。

分页在第一次单击时就可以正常工作,但是当我再次单击该分页器时,部分视图即已返回

控制器:

public class ProductController : Controller
{
    public IQueryable<Product> products = new List<Product> { 
    new Product{ProductId = 1, Name = "p1"},
     new Product{ProductId = 2, Name = "p2"},
      new Product{ProductId = 3, Name = "p3"},
       new Product{ProductId = 4, Name = "p4"},
        new Product{ProductId = 5, Name = "p5"}
    }.AsQueryable();

    public object Index()
    {         
        return View();
    }

    public object Products(int? page)
    {
        var pageNumber = page ?? 1; // if no page was specified in the querystring, default to the first page (1)
        var onePageOfProducts = products.ToPagedList(pageNumber, 3); // will only contain 25 products max because of the pageSize

        ViewBag.OnePageOfProducts = onePageOfProducts;
        return PartialView("_Products");
    }
}

观看次数:

Index.cshtml:

<link href="/Content/PagedList.css" rel="stylesheet" type="text/css" />

<h2>List of Products</h2>

<div id="products">    
    @Html.Action("Products", "Product")
</div>


@section scripts{

    <script type="text/javascript">
    $(function() {
    $('#myPager').on('click', 'a', function() {
        $.ajax({
            url: this.href,
            type: 'GET',
            cache: false,
            success: function(result) {
                $('#products').html(result);
            }
        });
        return false;
    });
    });
    </script>
    }

_Products.cshtml:

@using PagedList.Mvc;
@using PagedList;


<ul>
    @foreach(var product in ViewBag.OnePageOfProducts){
        <li>@product.Name</li>
    }
</ul>

<!-- output a paging control that lets the user navigation to the previous page, next page, etc -->
<div id="myPager">
    @Html.PagedListPager((IPagedList)ViewBag.OnePageOfProducts, page => Url.Action("Products", new { page }))
</div>

模型

public class Product
{
    public int ProductId { get; set; }
    public string Name { get; set; }
}

谁能告诉我我在做什么错?


问题答案:

我最终使用了来自pagedlist来源
[https://github.com/troygoode/PagedList][1]
的简洁Ajax示例

部分视图:

@using PagedList;
@using PagedList.Mvc;

<ul id="names" start="@ViewBag.Names.FirstItemOnPage">
    @foreach(var i in ViewBag.Names){
        <li>@i</li>
    }
</ul>

@Html.PagedListPager((IPagedList)ViewBag.Names, page => Url.Action("Index", new { page }), PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing( new AjaxOptions(){  HttpMethod = "GET", UpdateTargetId = "unobtrusive"}))

指数:

@{
    ViewBag.Title = "Unobtrusive Ajax";
}
@using PagedList;
@using PagedList.Mvc;

@Styles.Render("~/Content/PagedList.css")

<h2>Unobtrusive Ajax</h2>

<p>Example of paging a list:</p>
<div id="unobtrusive">
    @Html.Partial("UnobtrusiveAjax_Partial")
</div>

控制器:

  public class UnobtrusiveAjaxController : BaseController
    {
        // Unobtrusive Ajax
        public ActionResult Index(int? page)
        {
            var listPaged = GetPagedNames(page); // GetPagedNames is found in BaseController
            if (listPaged == null)
                return HttpNotFound();

            ViewBag.Names = listPaged;
            return Request.IsAjaxRequest()
                ? (ActionResult)PartialView("UnobtrusiveAjax_Partial")
                : View();
        }
    }


 类似资料:
  • 问题内容: 我检查了这个问题,它解决了我的最初问题。但是我不希望仅当用户单击链接时才显示部分视图,我希望在页面加载时显示部分视图,并且可能在加载部分视图时显示进度指示器。 如何实现? 非常感谢您阅读本文。 问题答案: 如果要加载页面,然后通过ajax加载部分视图,则可以创建一个执行以下操作的对象: 然后在您的页面中执行以下操作:

  • 问题内容: 以下Ajax请求在做什么错…? 链接/通话: 路线: 控制器: 风景: 部分称为: 错误: 看起来Rails正在寻找一个名为“更新”的视图-为什么以及如何解决此问题? 非常感谢!汤姆 问题答案: 好的,对于任何有类似问题的人,我都找到了解决方案: 问题在于,在Rails3中,Prototype被jQuery取代。因此,以下代码不再有效: 以下2个链接将说明有关如何处理jQuery的详细

  • 问题内容: 我在MVC应用程序中有此标记。 当它运行时,IngredientsListControl.ascx在浏览器中显示为新页面,并且不会更新Ingredientlistdiv。 这是我的控制器动作 我在这条线上做对了吗? 这就是我将控件呈现到div中的方式,以便它不会加载新页面。 马尔科姆 问题答案: 使用此功能时: …您应该注意,这与 它不会引发onsubmit事件,并且不会调用MVC的A

  • 我在尝试创建一个带有计算平均列的视图时遇到了一些麻烦,对于每个电影行,我都需要一个基于分级表中该电影的所有分级的平均分级。 电影表: 评级表: 以下是我目前掌握的情况: 它告诉我派生表需要自己的别名,我不知道这是否真的给出了每行的平均值。

  • 我在一个片段中使用ListView,我已经按照Android的指示设置了所有必要的要求,下面是我的XML列表代码 在我的代码中 但是,我仍然得到这个错误 08-20 23:26:26.053:E/AndroidRuntime(30334):致命异常:main 08-20 23:206:26.053:E/Android Runtime“30334”:进程:com.deliveryscience.tr

  • 我正在使用两个MjpegView(扩展表面视图的自定义视图)构建一个应用程序。问题是有时我看不到第一个摄像机视图后面的第二个摄像机视图。流媒体工作没有任何问题,我试图改变布局内摄像机视图的位置,但没有任何成功,也试图带到前面(第二个摄像机)。 这是它自己的布局的代码, 谢谢