我有以下情况: 日历 页面,加载最近两个月的初始销售节点。这个页面有一个 加载更多 的按钮,取更多的 销售 是额外的2个月项目 销售 。
我已将调用添加到to控制器操作中,如下所示:
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 和 __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>
在 售 项目被加载,但我无法访问 UmbracoHelper ,当我加入宏来销售页面场列表,通话中断,因为没有 UmbracoContext
参考。另外,以下字典调用不起作用:
@umbracoHelper.GetDictionaryValue("Calendar.ViewDetails")
有人遇到过类似的问题吗?
相关our.umbraco论坛帖子
编辑
我也尝试了以下提交表单实现,但是结果是相同的:
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();
}
编辑 :添加了固定的实现。
我能够通过CultureInfo
在返回之前设置来解决此问题,PartialView
如下所示:System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture)
动作方法如下:
public ActionResult LoadMoreSales(int months = 0, string culture = "")
{
// Set the 'CultureInfo' to perserve 'UmbracoContext' when performing an AJAX call
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
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");
}
}
我在中添加了隐藏cultureInfo
标签.cshtml
:
<div id="cultureInfo" hidden>@System.Threading.Thread.CurrentThread.CurrentCulture</div>
jQuery也进行了修改,以读取隐藏值并将其传递给控制器操作,如下所示:
var cultureInfo = $('#cultureInfo').html();
$.get("/umbraco/surface/Calendar/LoadMoreSales?months=" + months + "&culture=" + cultureInfo, function (data) {
if (data != '') {
$("#saleList").append(data);
}
else {
months = -1;
$("#saleList").append('No more news to display');
}
_inCallback = false;
$('div#loading').empty();
});
无需更改.cshtml
文件,字典值已正确加载。
我有一个mvc视图和一个局部视图。控制器中有一个ActionResult方法,它将返回一个PartialView。所以,我需要将ViewBag数据从ActionResult方法传递到部分视图。 这是我的控制器 在Index.cshtml视图中 Step1.cshtml局部视图 但是这是行不通的。那么,从viewpack获取数据的正确方法是什么?我想我遵循了错误的方法。请指导我。
假设我有一个名为的扩展,my_extension一个名为的插件。 然后,我的控制器中有一个名为的函数。 如何通过通常的http GET请求从外部调用此?
我正在尝试将子视图控制器添加到父视图控制器,并让父视图控制器通知子视图控制器旋转事件。但是,旋转消息不会转发到子视图控制器(这是默认行为)。为什么没有发生这种默认行为? 环境:iOS 7、XCode 5、OSX 10.9 我正在按照Apple文档中的说明实现一个自定义容器视图控制器:“创建自定义容器视图控制器”。我试图建立一个简单的父子关系来转发旋转事件。总体层次结构与此处重新绘制的文档图14-1
以下的一段代码相当于定义一个ParameterizableViewController视图控制器的快捷方式,该控制器会立即将一个请求转发(forwards)给一个视图。请确保仅在以下情景下才使用这个类:当控制器除了将视图渲染到响应中外不需要执行任何逻辑时。 以下是一个例子,展示了如何在MVC Java编程配置方式下将所有"/"请求直接转发给名字为"home"的视图: @Configuration
问题内容: 我知道这是一个非常基本的问题。 但是您能否告诉我 所有可用的选项 , 从Razor View 调用“ 控制操作方法” [通常是任何服务器端例程] , 以及哪种 情况最适合 用于哪种 情况 。 谢谢。 问题答案: 方法1: 使用jQuery Ajax Get调用( 部分页面更新 )。 适用于需要从数据库检索jSon数据的情况。 管制员的行动方法 jQuery GET 人类 方法2: 使用
我需要修改我的代码,使它成为一个模型-视图-控制器。因为我是一个完全的编程新手,如果我诚实的话,我会头疼。任何帮助如何做到这一点将不胜感激。 *在一个牧场上有200只忙碌的绵羊。这群羊由95只白羊、60只黑羊和45只白黑羊组成。牧羊人现在想把它们分开,这样相应的羊毛就可以按颜色剪了。帮他写一个小脚本,这样他就可以更好地点他的羊了。请使用变量、数组、数学运算符和函数实现前三点。提示:为了更好地概述,