如何将href mail中的数字符号放入使用MVC3适用于IE8的主题?

时间:2012-02-01 17:37:48

标签: asp.net-mvc-3 internet-explorer-8

我正在尝试使用MVC3和强类型建模创建电子邮件链接。我希望电子邮件的主题包含类似于:

的#符号
Request #56

我最初的尝试看起来像:

<a href = "mailto:@Model.Email?subject=Request #@Model.ID">@Model.Name</a>

它产生了我认为完美的HTML:

<a href="mailto:john.stone@nowhere.com?subject=Request #5">John Stone</a>

我发现Internet Explorer不喜欢主题中的#符号。如果我点击上面的“链接”,主题将设置为:

Request

在这里搜索后,我发现我需要使用%23来代替#。所以我的第二次尝试看起来像:

<a href = "mailto:@Model.Email?subject=Request %23 @Model.ID">@Model.Name</a>

这导致以下结果:

Request # 56

关闭,但我不想要#和数字之间的空格。

如何在没有空格的情况下正确使用#键?

我正在使用MVC3并尝试在IE8中使用它。

*添加了关于第一次尝试产生html以及IE如何处理主题的一些细节

实际上有两个问题正在发生。

首先是IE不允许主题文本中的#。所以#的任何实例都需要用%23替换。

第二个是MVC3解析器没有正确处理#23@Model.ID。它不会替换Model.ID的值。

下面列出了正确的解决方案,但要“剪切和粘贴”:

@{   
   string requestValue = "%23" + Model.ID.ToString()
}  
<a href = "mailto:@Model.Email?subject=Request @requestValue">@Model.Name</a>

以上将生成一个可正常点击的href邮件链接,如下所示:

<a href="mailto:john.stone@nowhere.com?subject=Request %235">John Stone</a>

点击上述内容后,电子邮件的主题将为“请求#5”。

1 个答案:

答案 0 :(得分:2)

您可以使用内联C#语句。

@{
  string requestValue = "#" + Model.ID.ToString() // or "%23"
}

<a href = "mailto:@Model.Email?subject=Request @requestValue">@Model.Name</a>