2015-10-13 4 views
1

я следующая моделиMAILTO кодирование ссылки в MVC Razor

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

mailbody содержит фактический текст, который является частью тела письма. Этот текст содержит длинный текст [содержит специальные символы типа? < и т. Д. И может содержать пробелы строк и т. Д.] Я хочу создать тэг mailto html в частичном представлении, и я попробовал 3 разных подхода, и в какой-то момент моя ссылка mailto не открывала почтовый клиент по умолчанию Я думаю, что причиной тому был Html или Url 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 Link

+0

Вы имеете в виду кодировку? – Amit

+0

да кодирование не шифрование –

+0

'@' должно правильно кодировать ваши строки, можете ли вы показать вывод, который вы получаете? – Amit

ответ

3

Попробуйте Url.Encode метод, так как вы могли пропустить некоторые специальные символы в вашем коде для ручного enc Одинг.

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

Также обратите внимание, что там может быть ограничение на длину атрибута href. См. this answer для более подробной информации.