2015-10-13 58 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