У меня есть числовое значение «значка», которое я пытаюсь отобразить в меню в моем приложении MVC 5.1.Подражать jquery hide от контроллера MVC
<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();
Я использую яваскрипта & JQuery на переднем конце, как пользователи могут изменять данные. Если счетчик достигает 0, команда jquery скрывает значок «0».
function setBadgeValue(badgeName, count) {
$(badgeName).html(count);
count > 0 ? $(badgeName).show() : $(badgeName).hide();
}
Все это отлично работает за одним исключением. Когда контроллер получает счетчик «0», я хотел бы скрыть значок из представления так же, как команды jquery show/hide. Элемент jQuery для интерфейса работает чудесно, но я не уверен, как добиться такого же эффекта со стороны контроллера.
Любая помощь была бы принята с благодарностью.
Update 1:
Представления У меня есть использовать объекты Telerik/Кендо. Это из представления, которое отображает сетку Кендо. Каждая строка сетки имеет кнопку, привязанную к этому методу. Я не уверен, что это поможет опубликовать весь просмотр/контроллер, поскольку большинство из них связано с Кэндо.
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);
}
});
}
Я действительно пробовал это, но у меня была та же проблема, что и с предложением Дэвида Херста. Он скрывает данные при загрузке, но затем будущие jquery show/hides не работают. Тем не менее, я думаю, что мы на правильном пути с настройкой стиля. Мне просто нужно выяснить, к чему это нужно. – Rethic
Я беру это обратно. Это сработало отлично, я забыл обновить свой кеш. Спасибо! – Rethic