2015-10-13 59 views
1

我有以下型号邮寄地址链接编码的MVC剃刀

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

mailbody包含的实际文本是邮件正文的一部分。这个文本包含一个长文本[包含特殊字符像? <等,并可以包含换行符空间等] 我想在部分视图中创建一个mailto html标记,我尝试了3种不同的方法,并在某些时候我的mailto链接不打开默认邮件客户端 我认为原因是Html或网址ecnoding [我显示在文本区域的mailbody内容,以及在这里,以确保每次都正确即将] 这是我的看法

@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("\n", "%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:@[email protected]&[email protected]_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> 

我该怎么做正确的编码创建的mailto链接

+0

你的意思是编码? – Amit

+0

yes编码不加密 –

+0

'@'应该正确编码你的字符串,你能显示你得到的输出吗? – Amit

回答

3

尝试Url.Encode方法,因为您可能错过了手动编码中的某些特殊字符oding。

<a class="btn btn-primary center" 
    href="mailto:@[email protected]&[email protected](Model.body)">Send Mail</a> 

另请注意,href属性的长度可能有限制。有关更多详细信息,请参见this answer