我有一個數字「徽章」值,我試圖在我的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