我有一个数字“徽章”值,我试图在我的MVC 5.1应用程序的菜单上显示。模仿从MVC控制器jQuery隐藏
<span id="myBadge" class="badge menu-badge">@SessionData.MyCount</span>
我有一个SessionData类,所以我不必传递魔术字符串。
public class SessionData
{
const string MyCountKey = "MyCount";
public static int MyCount
{
get { return HttpContext.Current.Session[MyCountKey] != null ? (int)HttpContext.Current.Session[MyCountKey] : 0; }
set { HttpContext.Current.Session[MyCountKey] = value; }
}
}
徽章最初是由执行数据库调用的基础控制器填充的。
SessionData.MyCount = CountThingsFromDatabase();
我使用在前端的JavaScript & jquery的作为用户修改数据。如果计数达到0,jquery命令将隐藏“0”徽章。
function setBadgeValue(badgeName, count) {
$(badgeName).html(count);
count > 0 ? $(badgeName).show() : $(badgeName).hide();
}
所有这一切工作正常,但有一个例外。当控制器检索到“0”的计数时,我想以与jquery show/hide命令相同的方式从视图中隐藏徽章。前端jQuery的作品奇妙,但我不确定如何从控制器方面完成同样的效果。
任何帮助将不胜感激。
更新1:
我有利用Telerik的/剑道对象的景色。这是从显示Kendo网格的视图。每个网格行都有一个绑定到此方法的按钮。我不确定它会发布整个视图/控制器,因为它大部分是Kendo相关的。
function addToCart(e) {
// Get the grid data
var grid = $("#Grid").data("kendoGrid");
var dataItem = grid.dataItem(grid.select());
// Add item to the cart
$.ajax({
url: 'Search/AddCart',
data: { itemId: dataItem.ItemId },
success: function() {
$('_MyBadge').html();
$('_Layout').html();
// Update the count
setBadgeValue("#myBadge", 1);
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
alert('Failed to add item #' + dataItem.itemId + ' to your cart.\nStatus: ' + textStatus + '\nError: ' + errorThrown);
}
});
}
我确实尝试过,但我遇到了与David Hirst的建议相同的问题。它在加载时隐藏数据,但未来的jQuery显示/隐藏不起作用。不过,我认为我们正在设定风格的正确轨道。我只需要弄清楚要设置的内容。 – Rethic
我回来了。这工作完美,我忘了刷新我的缓存。谢谢! – Rethic