我希望在页面上显示一个电子邮件地址列表,然后可以将其复制并粘贴到电子邮件客户端中。为什么他们希望以这种方式完成这件事并不是我所关心的,我只需要这样做。
我想知道的是展示这个的最佳方式是什么?我不确定是否应该使用巨型标签或文本框,或者是否有更好的东西。
任何建议都将不胜感激!
由于
编辑:不确定这是否重要,但地址是从数据库中提取的,所以我没有准备好将它们硬编码到页面中。我是ASP.NET新手和Web开发的新手,所以请耐心等待。
答案 0 :(得分:3)
我测试了这个(超级简单的)标记,并且可以很好地复制/粘贴到Outlook 2010和Gmail中。
<div>
user@domain.com<br />
user@domain.com<br />
user@domain.com<br />
user@domain.com<br />
user@domain.com<br />
user@domain.com<br />
</div>
编辑:是否紧凑或易于选择/复制要求?如果是,那么请说明您希望/需要的内容,以便提供适当的示例。
编辑2:根据所声明的地址列表大小,我认为这种标记模式最适合作为纯HTML解决方案。
E-mail Address Copy Instructions
<ol>
<li>Click inside the box below</li>
<li>Press Ctrl-A to select all addresses</li>
<li>Press Ctrl-C to copy all selected text</li>
</ol>
<textarea style="height: 150px;">user@domain.com
user@domain.com
user@domain.com
user@domain.com
user@domain.com
user@domain.com
user@domain.com
user@domain.com
</textarea>
编辑3:
假设您有一个List(Of String)
,这是一个例子。
标记:
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Height="150">
代码:(请原谅我的c#不完美,我通常用VB编写代码)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<String> liAddresses = new List<String>();
//Define list of addresses for demonstration purposes
//Replace with fetch from DB
for (int i = 1; i <= 50; i++)
{
liAddresses.Add(i.ToString() + "user@domain.com");
}
//Load TextBox with list of addresses, will render as <textarea>
foreach (String strAddress in liAddresses)
{
TextBox1.Text += strAddress + "\r\n";
}
}
}
答案 1 :(得分:2)
textarea的?还可以使用一些javascript来选择点击框中的所有文字。
答案 2 :(得分:1)
负责任编码的一部分是指导您的用户远离自己的脚。
话虽如此,我可能会输出带有文字,字符串构建器和单独条目<br />
的数据,并且正如Marc建议将所有内容包装在设有溢出和高度的div中。
答案 3 :(得分:0)
名单有多长?根据电子邮件地址列表的大小,您可以执行各种操作 - 即。为大多数尺寸实现可滚动列表视图,为非常大的列表实现分页gridview,或者如果列表非常小,则实现单个文本框。
答案 4 :(得分:0)
我会把它放在Textarea元素上。这种方式可以轻松复制。
答案 5 :(得分:0)
我会使用类似ListBox的东西,因此您可以迭代它们而无需使用分隔符解析列表。另一种方法是使用Outlook样式,并在分隔符作为分隔符的文本框中显示地址。
以分号分隔格式的一个好处是MailMessage类接受以分号分隔的收件人列表,因此这将使发送电子邮件的过程更容易。
答案 6 :(得分:-1)
我会使用可滚动的列表视图! 看一下这里的文档: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.scrollable.aspx