:: Не фоксом единым
получить значение из контроллера
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Нашли в программе косяк - у некоторых пользователей не убрана кнопка "Редактировать". Это самое "Редактировать" находится внутри гремучего JS-кода. Фронтендер в отпуске. Надо срочно сделать костыль - как то скрыть "Редактировать" с экрана, а фронтэндер придёт - переделает как надо. Вариант такой - добавить скрипт с таймером, который вызывает функцию, скрывающую лишний элемент с экрана.

Приложение asp MVC. В контроллере (C из MVC) ViewBag заполняется значениями, в том числе есть:

ViewBag.isEditable=true; // конечно, не true, а выражение, но в данном случае - не важно.

В представлении (V из MVC) такой код:

var isEditable = (bool)ViewBag.isEditable;

Костыль у меня получился такой. Добавляю в представление:

<div style="display:none" id="isEditable" data-editable="@isEditable"></div>
<script>
jQuery(document).ready(function ($) {
$(document).ready(function () {
startTimerRefresh();
});
});
var timerId;
var startTimerRefresh = function () {
var isEditable = document.getElementById("isEditable").getAttribute("data-editable");
if (isEditable=='False') {
timerId = setInterval(function () {
var aTags = document.getElementsByTagName("a");
for (var i = 0; i < aTags.length; i++) {
if (aTags[i].textContent == 'Редактировать') {
aTags[i].style.display = 'none';
}
}
}, 1000);
}
};
</script>

Вопрос - можно этот код как то упростить? Например, как то извлечь в JS из ViewBag.isEditable (без дополнительного div-а). Или, заменить:

var isEditable = document.getElementById("isEditable").getAttribute("data-editable");

на что то более гуманное? Хотя бы получать bool, а не стринг? Опять таки, поиск перебором - то же не айс.

Можете что то посоветовать?
Ratings: 0 negative/0 positive
Re: получить значение из контроллера
Рома

Сообщений: 1079
Дата регистрации: 06.06.2001
S-type
var isEditable = document.getElementById("isEditable").getAttribute("data-editable")

на что то более гуманное? Хотя бы получать bool, а не стринг?

Т.к. есть jQuery, то можно

var isEditable = ($("#isEditable").attr("data-editable") == 'False');

S-type
Опять таки, поиск перебором - то же не айс

$("a:contains('Редактировать')").css("display", "none")
Ratings: 0 negative/0 positive
Re: получить значение из контроллера
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Спасибо
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 11 (Гостей: 11)

© 2000-2024 Fox Club 
Яндекс.Метрика