【问题标题】:MVC - Get Html tag in ControllerMVC - 在控制器中获取 Html 标签
【发布时间】:2018-04-24 01:46:20
【问题描述】:

我的网站中有一个部分,当用户单击发送按钮时,我想将其作为电子邮件发送给用户。如何将 HTML 及其内容传递给控制器​​,然后将其作为消息体传递给 smtpClient

我有

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

</div>

当从控制器调用 id mydiv 时,我想获取所有 html 及其内容 (&lt;div id="mydiv"&gt;&lt;div&gt;&lt;a&gt;Click Here&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;)

【问题讨论】:

  • 您需要为联系表单中的字段使用模型。查看在线教程。

标签: c# asp.net asp.net-mvc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以使用 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("test@test.com");
            mailMessage.To.Add("test@test.com");
            mailMessage.Body = data1;
            mailMessage.Subject = "subject";
            client.Send(mailMessage);
    
            return null;//or whatever you want
    }
    

    【讨论】:

    • 应该 mailMessage.Body = data1; ?
    • data1 返回 null
    • 请指定 POST 作为方法。我已经更新了答案。
    猜你喜欢
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多