【发布时间】:2016-02-22 20:30:55
【问题描述】:
我有以下场景:日历页面加载了过去 2 个月的初始销售节点。此页面有一个 Load more 按钮,用于获取更多 Sale 商品,这些商品是另外 2 个月的Sales。
我已经添加了对控制器操作的调用,如下所示:
public ActionResult LoadMoreSales(int months = 0)
{
if (Request.IsAjaxRequest())
{
if (Request.QueryString["department"] == null)
{
return PartialView("Calendar/_Sales", GetSales(0, months));
}
else
{
int depId = 0;
Int32.TryParse(Request.QueryString["department"], out depId);
return PartialView("Calendar/_Sales", GetSales(depId, months));
}
}
else
{
return PartialView("Calendar/_Sales");
}
}
GetSale 检索 SaleViewModel 列表,并在访问 Calendar 页面时使用 _Sales 部分点击加载更多按钮。通过此方法,正在进行 AJAX 调用并正在检索列表。
_Sales 部分继承了以下内容:
@inherits Umbraco.Web.Mvc.UmbracoViewPage<IEnumerable<SaleViewModel>>
点击按钮的jQuery事件:
$('.js-reload-details').on('click', function (evt) {
$('div#loading').html('<img src="/images/ajax-loader.gif" />');
evt.preventDefault();
evt.stopPropagation();
var $detailsDiv = $('#detailsDiv'),
url = $(this).data('url');
$.get(url, function (data) {
$detailsDiv.replaceWith(data);
});
$('div#loading').empty();
});
按钮点击是这样实现的:
<a id="loadMore" class="js-reload-details cta" data-url="@Url.Action("LoadMoreSales", "Calendar", new { months = -2})" href="javascript:;">@Umbraco.GetDictionaryValue("Calendar.LoadMore")</a>
Sale 项目正在加载,但我无法访问 UmbracoHelper,当我将宏添加到销售页面字段列表时,呼叫中断,因为有没有 UmbracoContext 参考。此外,以下字典调用不起作用:
@umbracoHelper.GetDictionaryValue("Calendar.ViewDetails")
有人遇到过类似的问题吗?
Related our.umbraco forum post
编辑
我也试过下面的提交表单实现,但是结果是一样的:
AJAX 形式:
@using (Ajax.BeginForm("LoadMoreSales",
"Calendar",
new {months = -2},
new AjaxOption { HttpMethod = "GET",
OnSuccess = "loadMore(data, status, xhr)" }))
jQuery 实现:
function loadMore(data, status, xhr) {
$('div#loading').html('<img src="/images/ajax-loader.gif" />');
if (data != '') {
$("#saleList").append(data);
}
$('div#loading').empty();
}
【问题讨论】:
标签: jquery ajax asp.net-mvc umbraco umbraco7