MVC - Получить тег Html в контроллере

Niang Moore спросил: 28 марта 2018 в 04:02 в: c#

У меня есть раздел на моем сайте, на котором я хочу отправить электронное письмо пользователю, когда он нажимает кнопку отправки. Как я могу передать HTML и содержимое для контроллера, а затем передать его как тело сообщения в smtpClient

У меня

<div id="mydiv">
<div>
<a>Click Here</a>
</div></div>

Мне бы хотелось получить все html и его содержимое (<div id="mydiv"><div><a>Click Here</a></div></div>), когда id mydiv вызывается из контроллера

2 ответа

Munzer ответил: 29 марта 2018 в 03:32

Я бы использовал редактор HTML, проверьте ckeditor, например. и вот учебник о том, как реализовать его с помощью mvcand, когда вы устанавливаете CKEDITOR, убедитесь, что config htmlEncodeOutput имеет значение true. Если вы его использовали, действие может отклонить запрос, потому что он содержит опасный ввод, вам придется установить вход проверки в false или проверьте этот для получения дополнительной информации

Stephen Mehhh ответил: 30 марта 2018 в 04:06

Вы можете использовать jQuery для перехвата клика и создания ajax-запроса, который включает html по вашему выбору. Примите HTML как строковый аргумент с соответствующим именем. Затем используйте клиент smtp для пересылки по адресу по вашему выбору.

<script>
$(document).ready(function () {
    $(document).on("click", "#button1", {}, function (event) {
        event.preventDefault();        var x = $("#mydiv").html();        var options = {
            url: "your url",
            method: "POST",
            data: {
                data1: x
            }
        };        var req = $.ajax(options);        req.done(function (resp) {
            alert("Email sent");
        });    });
});
</script><div id="mydiv">
<div>
    <a id="button1">Click Here</a>
</div>
</div>public IActionResult TestAction(string data1)
{
        SmtpClient client = new SmtpClient("smtp_server");
        client.UseDefaultCredentials = false;
        client.Credentials = new NetworkCredential("username", "password");        MailMessage mailMessage = new MailMessage();
        mailMessage.From = new MailAddress("test@test.com");
        mailMessage.To.Add("test@test.com");
        mailMessage.Body = data1;
        mailMessage.Subject = "subject";
        client.Send(mailMessage);        return null;//or whatever you want
}
Niang Moore ответил: 28 марта 2018 в 05:14
следует mailMessage.Body = data1; ?
Stephen Mehhh ответил: 28 марта 2018 в 06:54
Да, я обновил ответ, чтобы отразить это.
Niang Moore ответил: 30 марта 2018 в 08:51
data1 возвращает ноль
Stephen Mehhh ответил: 30 марта 2018 в 04:07
Пожалуйста, укажите POST в качестве метода. Я обновил ответ.