【问题标题】:render partial view from jquery not working从jquery渲染部分视图不起作用
【发布时间】:2016-02-09 12:42:51
【问题描述】:

我在使用 jquery 渲染部分视图时遇到了一些问题。即使被多次询问(here),我也没有找到适合我的解决方案: 我的看法:

@model IEnumerable<OdeToFood.Models.RestaurantListViewModel>

@{
    ViewBag.Title = "Home Page";
}

<form method="get" action="@Url.Action("Index")" data-otf-ajax="true" data-otf-target="#restaurantlist">
    <input type="search" name="searchTerm" />
    <input type="submit" value="Search By Name" />

</form>

@Html.Partial("_Restaurants", Model)

我的部分观点:

@model IEnumerable<OdeToFood.Models.RestaurantListViewModel>

<div id="restaurantList">

    @foreach (var item in Model)
    {
        <div>
            <h4>@item.Name</h4>
            <div>@item.City, @item.Country</div>
            <div>REviews: @item.CountOfReviews</div>
            <hr />
        </div>
    }
</div>

otf.js:

$(function () {

    var ajaxFormSubmit = function () {
        var $form = $(this);

        var options = {
            url: $form.attr("action"),
            type: $form.attr("method"),
            data: $form.serialize()
        };

        $.ajax(options).done(function (data) {
            var $target = $($form.attr("data-otf-target"));
            $target.replaceWith(data);
        });

        return false;
    };

    $("form[data-otf-ajax='true']").submit(ajaxFormSubmit);
});

我的控制器的索引操作:

 public ActionResult Index(string searchTerm = null)
        {
            var model =
                _db.Restaurants
                .OrderByDescending(r => r.RestaurantReviews.Average(a => a.Rating))                
                .Where(r => searchTerm == null || r.Name.StartsWith(searchTerm))
                .Select(r => new RestaurantListViewModel
                {
                    Id = r.Id,
                    Name = r.Name,
                    City = r.City,
                    Country = r.Country,
                    CountOfReviews = r.RestaurantReviews.Count()
                }
                )
                .Take(10);

            if (Request.IsAjaxRequest())
            {
                return PartialView("_Restaurants", model);
            }

            return View(model);
        }

我的问题是当我按下搜索按钮时没有任何反应。我添加了一个测试警报,例如:

$.ajax(options).done(function (data) {
            var $target = $($form.attr("data-otf-target"));
            alert('test');
            $target.replaceWith(data);
        });

当我单击搜索按钮时会显示警报,但在站点中没有任何反应。有谁知道我的问题是什么?

【问题讨论】:

  • 浏览器控制台有错误吗?
  • 没有错误,只是一个警告:此页面上的代码禁用了前后缓存。欲了解更多信息,请参阅:go.microsoft.com/fwlink/?LinkID=291337

标签: c# jquery model-view-controller asynchronous partial-views


【解决方案1】:

你有#restaurantlist作为目标,而div id实际上是restaurantList。大写“L”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-28
    • 2020-12-21
    • 2013-10-08
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多