Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
GradX
21 / 21 / 8
Регистрация: 17.11.2012
Сообщений: 124
1

Передача данных из CKEditor в метод контроллера

17.03.2015, 12:04. Просмотров 1281. Ответов 7
Метки нет (Все метки)

В общем код представления:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>EditC</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="/ckeditor/ckeditor.js"></script>
    <script src="/ckeditor/adapters/jquery.js"></script>
</head>
<body>
    <div>
        @using (Html.BeginForm("EditC", "Main", FormMethod.Post))
        {   
            <textarea class="ckeditor" name="Content" spellcheck="false"></textarea>           
            <button type="submit" name="action" value="remove_article">Show result</button>
        }
    </div>
</body>
</html>
При нажатии на кнопку, переменная типа string с именем Content (значение получается из CKEditor) передается в метод контроллера. В это месте возникает ошибка, т.к. переменная содержит html теги, и это является потенциально небезопасным значением (во всяком случае, так пишет VisualStudio и наотрез отказывается работать).
Вопрос: как передать переменную содержащую html теги из представления в контроллер?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2015, 12:04
Ответы с готовыми решениями:

Передача данных внутри контроллера
Нужно передать массив строк из одного действия контроллера в другое. Вариант с TempData не очень...

Передача данных между методами контроллера
Доброго времени суток. Ситуация следующая: в контроллере есть вот такие вот экшны public...

Передача данных из контроллера во вьюху через Ajax
Здравствуйте. у меня такой вопрос: есть БД, которая подключена к проекту через Entity Framework....

Вызвать метод контроллера из представления или другого контроллера
Мне нужно по кнопке вызвать метод LogOut в контроллере AccountController. Я пытаюсь сделать так:...

Ajax передача данных в метод
Подскажите пожалуйста, как передать данные в метод контроллера. Суть в следующем. Есть такой...

7
valera_21
376 / 360 / 94
Регистрация: 05.01.2010
Сообщений: 1,501
Завершенные тесты: 5
17.03.2015, 17:33 2
как вариант решения - для метода добавить атрибут [ValidateInput(false)]
1
kenny69
burning1ife
1415 / 1237 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
17.03.2015, 17:54 3
Либо для поля Content установить AllowHtml
C#
1
2
3
4
5
public class BlogEntry {
    public int UserId {get;set;}
    [AllowHtml] 
    public string BlogText {get;set;}
 }
1
GradX
21 / 21 / 8
Регистрация: 17.11.2012
Сообщений: 124
18.03.2015, 09:13  [ТС] 4
Еще одна проблема, пробовал решить самостоятельно, но идеи иссякли.

Суть проблемы: при выводе переменной (в которой записано значение полученное из CKEditor) в другом представлении - браузер отображает содержимое этой переменной как обычный текст, а не как html разметку.

Код представления:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="text/html" />
    <title>View1</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="/ckeditor/ckeditor.js"></script>
    <script src="/ckeditor/adapters/jquery.js"></script>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    <div>@ViewBag.Content</div>
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
</body>
</html>
Т.е. слово "сообщение" введенное в поле редактора из предыдущего представления должно отображаться при обработке браузером этого представления точно также как я его вижу в поле редактора. Но вместо этого я вижу следующее:
HTML5
1
<p>сообщение<p>
При этом, все теги форматирования использованные в редакторе, тоже воспринимаются браузером как обычный текст (т.е. все теги видны в окне браузера).

Что принимал предпринимал:
-просмотрел исходный код представления с помощью "средства разработчика" в браузере: на первый взгляд ничем не отличается, только теги (те что переданы в переменной) не подсвечиваются как остальные теги разметки, и сверху и снизу всего содержимого переменной по нескольку рядов пустого пространства;
-колдовал с кодировкой содержимого переменной, использовал метод Trim() для отсечения пробелов и пустого пространства - результат тотже;
-"игрался" с методами WebUtility.HtmlEncode() и WebUtility.HtmlDecode() - безрезультатно.
Пробовал разные способы "связки" CKEditora с тегом textarea в представлении - не помогло.

Может у кого есть идеи? Что я делаю не так? Впечатление, что блуждаю в трех соснах.
0
valera_21
376 / 360 / 94
Регистрация: 05.01.2010
Сообщений: 1,501
Завершенные тесты: 5
18.03.2015, 13:09 5
HTML5
1
<div>@Html.Raw(ViewBag.Content)</div>
вроде как должен помогать) само собой, надо быть предельно аккуратным с содержимым пееременной в плане безопастности
1
GradX
21 / 21 / 8
Регистрация: 17.11.2012
Сообщений: 124
18.03.2015, 13:16  [ТС] 6
Благодарю всех за участие! Все ответы были архи-полезны.
Насчет @Html.Raw вообще в шоке. Я уже через javascript начал мудрить. А тут бац - решение проще не придумаешь. Благодарю в общем.
0
lifeact
49 / 49 / 12
Регистрация: 24.10.2012
Сообщений: 432
20.03.2015, 09:05 7
а ты к этому редактору не прикручивал никакого менеджера? Менеджера картинок... Я как то искал, запарился, а CKFinder шибко дорогой....
0
GradX
21 / 21 / 8
Регистрация: 17.11.2012
Сообщений: 124
22.03.2015, 04:38  [ТС] 8
Еще ничего не прикручивал, даже менеджер файлов, я над движком сайта сейчас работаю, над фичами позже.
0
22.03.2015, 04:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2015, 04:38

Сохранение данных в модели и передача в другой метод
Добрый день ! Нужна помощь. Есть определенная модель которая заполняется в методе Index, в этой...

Передача данных их контроллера в views
Здравствуйте, МБ вопрос совсем не точный, изучаю ООП и стопарнулся на таком этапе: Класс View...

Передача данных из одного контроллера в другой
Приветствую всех. Подскажите, как мне передавать данные от одного микроконтроллера к другому на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru