【问题标题】:Setting body text of mailto from asp.net code behind method从 asp.net 代码后面的方法设置 mailto 的正文
【发布时间】:2012-09-03 20:32:00
【问题描述】:

我有一个 ASP.NET 按钮。如果用户单击此按钮,则会调用mailto,从而打开 Outlook 邮件窗口。我通过在 ASP.net 按钮控件标记中添加以下行来完成此操作。

window.open('mailto: abc def<abc.def@ex.com>?subject= exSub &body= exBody');

现在我想在我的代码隐藏方法中动态设置正文文本(在上面的示例中为 exBody)。我该怎么做?

【问题讨论】:

    标签: asp.net mailto


    【解决方案1】:

    将其绑定到页面属性,并使用该属性构造mailto属性(URL-encoded):

    <asp:Button RunAt = "Server"
        onclick = <%# 
            "window.open('mailto: abc def<abc.def@ex.com>?subject= exSub &body="
            + Server.UrlEncode(MailToBody ?? "") + "');"
        %>
    />
    

    然后根据需要从您的代码隐藏中设置MailToBody 属性。

    【讨论】:

    • 不是OnClientClick吗?我累了,但它不工作。我正在使用 ASP.NET 3.5。如果我不使用&lt;%# %&gt;,则会打开新的 Outlook 窗口,但我无法动态设置正文。如果我使用&lt;%# %&gt; 什么都不会发生。
    • @HelloWorld 尝试改用&lt;%=。 (&lt;%# 需要正确设置数据绑定。)
    • 无法编译,显示错误信息。只是让您知道我在更新面板中有这个按钮(ans 脚本)。是它不工作的原因吗?
    • @HelloWorld 啊,对不起,没有意识到你不能在服务器标签中使用&lt;%=。我认为更新面板无关紧要。
    • @HelloWorld 我刚刚测试了它,OnClientClick 也不适合我。我建议使用 onclick 代替,我能够像我的回答一样让它工作。只需确保页面是数据绑定的(例如,在Page_Load 中使用this.DataBind())。
    【解决方案2】:

    您可以通过以下方式在Click按钮事件中注册脚本:

     string mailBody = getMailBody(); //// Get the content for email body
     ClientScript.RegisterStartupScript(this.GetType(), "mailto",
            "window.open('mailto: abc def<abc.def@ex.com>?subject= exSub &body= "+ mailBody +"');", true);
    

    【讨论】:

    • 如果按钮在Update Panel 内,ClientScript.RegisterStartupScript() 不起作用。但是,ScriptManager.RegisterStartupScript() 有效。感谢您的帮助。
    猜你喜欢
    • 2016-07-06
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多