如何设置Async =" true"对于所有页面?

时间:2014-02-21 12:49:01

标签: c# asp.net .net webforms

我正在使用ASP.NET发送异步电子邮件。 我注意到我必须在视图中设置“Async = true”。

母版页不支持此属性。如何为所有页面设置Async?

5 个答案:

答案 0 :(得分:2)

您可以像这样在母版页中进行设置。找到解决方案here

public abstract class MyBasePage : System.Web.UI.Page
{
    public MyBasePage()
    {
        this.AsyncMode = true;
    }
}

然后将aspx.cs文件中的继承更改为以下内容:

public partial class WebForm1 : MyBasePage

当您在构造函数中设置AsyncMode属性时,它可能会破坏系统。

答案 1 :(得分:1)

打开查找对话框并输入:

Find: @Page
Replace with: @Page Async="True"

单击全部替换按钮:-D根据我的理解,您不能自动为所有内容执行此操作。它需要在每一页上定义。

答案 2 :(得分:0)

为什么不使用AJAX,而不是尝试在ASP.NET的页面代码中发送电子邮件?创建一个响应POST的ASPX文件,如登录表单,当发布时,它会发送一封电子邮件。 AJAX是异步的,您可以使用它在活动网页中显示进度。可在此处找到AJAX简介:http://www.w3schools.com/ajax/default.asp

就个人而言,我使用jQuery来完成我的AJAX工作。您可能需要查看它:http://jquery.com/

最后但并非最不重要的是,如果您不想“自己动手”代码来执行此操作,请查看用于邮件传递的Web API,例如Mandrill:http://mandrill.com/

答案 3 :(得分:0)

包含tpl引用。 然后做 Task.Run(()=> Sendmailmethod()); 这是快速整齐的火灾忘记模式

答案 4 :(得分:0)

如果您的网页没有代码隐藏,则可以使用此策略。

namespace com.mystuff
{
 public class MyPage: System.Web.UI.Page
 {
    public MyBasePage()
     {
         this.AsyncMode = true;
     }
 }
}

<system.web>
   <pages pageBaseType="com.mystuff.MyPage" />
</system.web>

更多信息 https://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.pagebasetype(v=vs.110).aspx