MVC Razor 中的 mailto 链接编码 [英] mailto link encoding in MVC Razor

查看:28
本文介绍了MVC Razor 中的 mailto 链接编码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下型号

公共类 EmailLinkModel{公共字符串邮件正文 { 获取;放;}公共字符串 emailSubject { get;放;}公共字符串 emailto { get;放;}}

mailbody 包含作为邮件正文一部分的实际文本.此文本包含一个长文本 [ 包含特殊字符,如 ?<等并且可以包含换行符空格等]我想在局部视图中创建一个 mailto html 标签,我尝试了 3 种不同的方法,在某些时候我的 mailto 链接没有打开默认的邮件客户端我认为原因是 Html 或 Url ecnoding [我也在文本区域中显示邮件正文内容,以确保值正确出现]这是我的看法

@model RoyalDb.Models.EmailLinkModel@{布局 = 空;}<div class="row">@{var formatted_doc_data = Model.mailbody;/*var formatted_doc_data =HttpUtility.HtmlEncode(Model.mailbody);*//* var formatted_doc_data = Model.mailbody.ToString().Trim().Replace("
", "%0D%0A");formatted_doc_data = formatted_doc_data.ToString().Trim().Replace(" ", "%20");formatted_doc_data = formatted_doc_data.ToString().Trim().Replace(" ", "%20");formatted_doc_data = formatted_doc_data.ToString().Trim().Replace("%", "%25");formatted_doc_data = formatted_doc_data.ToString().Trim().Replace("?", "%3F");formatted_doc_data = formatted_doc_data.ToString().Trim().Replace("/", "%2F");formatted_doc_data = formatted_doc_data.ToString().Trim().Replace(":", "%3A");*/}<a class="btn btn-primary center" href="mailto:@Model.emailto?Subject=@Model.emailSubject&body=@formatted_doc_data" target="_top">发送邮件</a>

<小时/><div class="row">@Html.TextAreaFor(m => m.mailbody, new { style = "width: 100%; height:200px;margin:5px 5px;" })

如何正确编码来创建mailto链接

解决方案

尝试 Url.Encode 方法,因为您可能在手动编码的代码中遗漏了一些特殊字符.

另外请注意,href 属性的长度可能有限制.有关详细信息,请参阅此答案.

I have the following model

public class EmailLinkModel
{
    public string mailbody { get; set; }
    public string emailSubject { get; set; }
    public string emailto { get; set; }        
}

mailbody contains the actual text which is a part of mail body. This text contains a long text [ contains special characters like ? < etc and can contain line breaks spaces etc] I want to create a mailto html tag in the partial view and i tried 3 different approaches and at some point my mailto link not opening the default mail client I think the reason was Html or Url ecnoding [ I am showing the mailbody content in a text area as well here to make sure value is coming correctly] Here is my view

@model RoyaltyDb.Models.EmailLinkModel
@{
    Layout = null;
}
<div class="row ">
    @{
        var formatted_doc_data = Model.mailbody;
        /*
        var formatted_doc_data =HttpUtility.HtmlEncode(Model.mailbody);
          */

      /*  var formatted_doc_data = Model.mailbody.ToString().Trim().Replace("
", "%0D%0A");
        formatted_doc_data = formatted_doc_data.ToString().Trim().Replace(" ", "%20");
        formatted_doc_data = formatted_doc_data.ToString().Trim().Replace(" ", "%20");
        formatted_doc_data = formatted_doc_data.ToString().Trim().Replace("%", "%25");
        formatted_doc_data = formatted_doc_data.ToString().Trim().Replace("?", "%3F");
        formatted_doc_data = formatted_doc_data.ToString().Trim().Replace("/", "%2F");
        formatted_doc_data = formatted_doc_data.ToString().Trim().Replace(":", "%3A");*/
    }
    <a class="btn btn-primary center" href="mailto:@Model.emailto?Subject=@Model.emailSubject&body=@formatted_doc_data" target="_top">Send Mail</a>
</div>
<hr/>
<div class="row">
    @Html.TextAreaFor(m => m.mailbody, new { style = "width: 100%; height:200px;margin:5px 5px;" })
</div>

How can i do proper encoding to create the mailto Link

解决方案

Try Url.Encode method, as you might have missed some special characters in your code for manual encoding.

<a class="btn btn-primary center"
   href="mailto:@Model.emailto?Subject=@Model.emailSubject&body=@Url.Encode(Model.body)">Send Mail</a>

Also please note, that there might be a limit for the length of the href attribute. See this answer for more details.

这篇关于MVC Razor 中的 mailto 链接编码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆