LifeAct
@LifeAct
Создаем и раскручиваем, не ставим на конвейер

Как передать параметр действия с js на контроллер?

Всем привет!

Использую на сайте визуальный редактор CKEDITOR, все ок, но теперь понадобилось накладывать водяной знак, да еще и не всем подряд загружаемым картинкам, а только если этого пожелал редактор создаваемой записи, то-есть нужно передавать некий параметр в загрузчик:

var waterMarkOn = '';

    $(function() {
        $("#waterMark").on("click", function () {
            if ($(this).is(":checked")) { waterMarkOn='1'; }
            else { waterMarkOn = '0'; }

            alert(waterMarkOn);
        })
    });

  

    CKEDITOR.replace('ae-textarea-text', {
        filebrowserImageUploadUrl: '/Record/Upload?waterMarkOn=' + waterMarkOn,
        height: 650,
        width: 950

    });


waterMarkOn - чек бокс, если юзер отметил, то мне нужно накладывать картинку, загвоздка в filebrowserImageUploadUrl: '/Record/Upload?waterMarkOn=' + waterMarkOn,

как я не пробовал, на контроллер public ActionResult Upload(HttpPostedFileBase upload, string CKEditorFuncNum, string CKEditor, string langCode, string waterMarkOn)
waterMarkOn идет или null или пустой.

пробовал так filebrowserImageUploadUrl: '/Record/Upload/'+ waterMarkOn, в таком случае null, в первом просто "" пусто.

Наверно синтаксис js.... подскажите пж

#UP1
понял в чем проблема, этот блок CKEDITOR.replace('ae-textarea-text', { ....

инициируется при отображении представления, и далее на него я не могу влиять, то есть я динамически не могу подставить туда какой либо параметр. Единственное что приходит на ум - выбирать параметр "накладывать водяной знак или нет" перед отображением представления, но это извращение еще то... (

#UP2

docs.ckeditor.com/#!/guide/dev_jquery

Подрубил скрипты и написал как в доке:

....

CKEDITOR.replace('ae-textarea-text', {
filebrowserImageUploadUrl: '/Record/Upload?waterMarkOn=0',
height: 650,
width: 950
});

$(function() {
$("#waterMark").on("click", function () {
if ($(this).is(":checked"))
{
$('ae-textarea-text').ckeditor({
filebrowserImageUploadUrl: '/Record/Upload?waterMarkOn=1',
height: 180,
width: 515
});
alert('on');
}

else
{
$('ae-textarea-text').ckeditor({
filebrowserImageUploadUrl: '/Record/Upload?waterMarkOn=0',
height: 180,
width: 515
});
alert('off');
}


})
});

ошибок нет, но и не работает, всегда filebrowserImageUploadUrl: '/Record/Upload?waterMarkOn=0',
  • Вопрос задан
  • 381 просмотр
Пригласить эксперта
Ответы на вопрос 1
@dmitryKovalskiy
программист средней руки
Проверьте в отладчике. Может ваш код вообще не попадает в ветку проставления значения 1. Можно вместо селектора использовать prop("checked"). Также если вы используете Razor - checkbox можно создать как Html.Checkbox, отказаться от обработчика событий клика и передавать уже value данного контрола , без селекторов и шаманства с временными переменными.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы