MVC - 在Controller中获取Html标记

问题描述 投票:0回答:2

我在我的网站上有一个部分,我想在用户点击按钮发送时将其作为电子邮件发送给用户。如何将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时

c# asp.net asp.net-mvc
2个回答
0
投票

我会使用html编辑器,例如检查ckeditor。和here是关于如何用mvc实现它的教程,当你安装CKEDITOR时确保配置htmlEncodeOutput为真。如果您使用它,操作可能会拒绝该请求,因为它包含危险输入,您必须将validate输入设置为false,或检查this以获取更多详细信息


0
投票

您可以使用jQuery拦截单击并构造一个包含您选择的html的ajax请求。接受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("[email protected]");
        mailMessage.To.Add("[email protected]");
        mailMessage.Body = data1;
        mailMessage.Subject = "subject";
        client.Send(mailMessage);

        return null;//or whatever you want
}
© www.soinside.com 2019 - 2024. All rights reserved.