姓名'邮箱'在当前上下文中不存在(Web应用程序)

本文关键字:不存在 Web 应用程序 邮箱 姓名 上下文 | 更新日期: 2023-09-27 18:04:04

我正在将我的sitefinity网站项目转换为web应用程序。

我们有一个用户控制,原来是在网站上工作,但现在我们得到以下错误时,构建web应用程序。

名称'Email'在当前上下文中不存在(第104行)

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Web.Security;
using System.Net.Mail;
using Telerik.Sitefinity.Security;
using Telerik.Sitefinity.Security.Model;
using Telerik.Sitefinity.Model;

namespace UserControls.Saville
{
    public partial class CustomUserRegistration : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Url.Query.Contains("?registered"))
            {
                userRegistration.Visible = false;
                RegSuccess.Text = "We have emailed you an account activation link. Please check your emails.";
            }
        }
        protected void btnRegister_OnClick(object sender, EventArgs e)
        {
            Match emailValid = Regex.Match(tbxRegEmail.Text, @"^((['w-]+'.)+['w-]+|([a-zA-Z]{1}|['w-]{2,}))@"
                                                                + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])'.([0-1]?
                                                            [0-9]{1,2}|25[0-5]|2[0-4][0-9])'."
                                                                + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])'.([0-1]?
                                                            [0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
                                                                + @"([a-zA-Z]+['w-]+'.)+[a-zA-Z]{2,4})$");
            if (tbxFirstName.Text != String.Empty &&
                tbxSurname.Text != String.Empty &&
                tbxJobTitle.Text != String.Empty &&
                tbxOrganisation.Text != String.Empty &&
                tbxTelephone.Text != String.Empty &&
                tbxAddressLine1.Text != String.Empty &&
                tbxAddressCity.Text != String.Empty &&
                tbxAddressPostcode.Text != String.Empty &&
                tbxAddressCounty.Text != String.Empty &&
                tbxAddressCountry.Text != String.Empty &&
                tbxRegEmail.Text != String.Empty &&
                tbxRegUsername.Text != String.Empty &&
                tbxRegPassword.Text != String.Empty &&
                tbxCPassword.Text != String.Empty &&
                emailValid.Success &&
                tbxRegPassword.Text.Length > 5 &&
                tbxRegPassword.Text == tbxCPassword.Text)
            {
                var manager = UserManager.GetManager("AspNetSqlMembershipProvider");
                manager.Provider.SuppressSecurityChecks = true;
                if (manager.UserExists(tbxRegUsername.Text))
                {
                    RegError.Text = "Username already in use.";
                }
                else
                {
                    if (manager.EmailExists(tbxRegEmail.Text))
                    {
                        RegError.Text = "Email Address is already registered";
                    }
                    else
                    {
                        MembershipCreateStatus status;
                        User user = manager.CreateUser(tbxRegUsername.Text, tbxRegPassword.Text, tbxRegEmail.Text, "Question", "Answer", false, null, out status);
                        manager.SaveChanges();
                        if (status == MembershipCreateStatus.Success)
                        {
                            UserProfileManager profileManager = UserProfileManager.GetManager();
                            profileManager.Provider.SuppressSecurityChecks = true;
                            SitefinityProfile userProfile = profileManager.CreateProfile(user, Guid.NewGuid(), typeof(SitefinityProfile)) as SitefinityProfile;
                            if (userProfile != null)
                            {
                                userProfile.SetValue("Title", ddlTitle.SelectedItem.Text);
                                userProfile.FirstName = tbxFirstName.Text;
                                userProfile.LastName = tbxSurname.Text;
                                userProfile.SetValue("JobTitle", tbxJobTitle.Text);
                                userProfile.SetValue("Organisation", tbxOrganisation.Text);
                                userProfile.SetValue("MainPhone", tbxTelephone.Text);
                                userProfile.SetValue("MobilePhone", tbxMobileTelephone.Text);
                                userProfile.SetValue("Address_Street_1", tbxAddressLine1.Text);
                                userProfile.SetValue("Address_Street_2", tbxAddressLine2.Text);
                                userProfile.SetValue("Address_City", tbxAddressCity.Text);
                                userProfile.SetValue("Address_PostcodeZIP", tbxAddressPostcode.Text);
                                userProfile.SetValue("Address_CountyState", tbxAddressCounty.Text);
                                userProfile.SetValue("Address_Country", tbxAddressCountry.Text);
                                userProfile.SetValue("Registration_Code", tbxRegCode.Text);
                                userProfile.SetValue("SendMarketing", chkbxMaterials.Checked);
                                profileManager.SaveChanges();
                                RoleManager roleManager = RoleManager.GetManager("AspNetSqlRoleProvider");
                                roleManager.Provider.SuppressSecurityChecks = true;
                                Role untrained = roleManager.GetRole("Untrained");
                                roleManager.AddUserToRole(user, untrained);
                                roleManager.SaveChanges();
                                String emailContent = String.Format("{1}, <br/><br/>Your registration is nearly complete.<br/><br/>Please follow this link to activate your account:<br/><a href='{2}/login?ID={3}'>{2}/login?ID={3}</a>", Environment.NewLine, tbxFirstName.Text, Request.Url.GetLeftPart(UriPartial.Authority), user.Id.ToString());
                                Email.Send(tbxRegEmail.Text, "support.manager@*****.com", "*****", emailContent);
                                Response.Redirect("~/login?registered");
                            }
                            RegError.Text = "An error occurred whilst registering. If problem persists please contact support.manager@*****.com";
                        }
                    }
                }
            }
            else
            {
                RegError.Text = "Please check all required fields have been filled and are valid.";
            }
        }
    }
}

最初我们在项目的另一个文件夹中有一个Email.cs文件,但是webapp似乎找不到它

姓名'邮箱'在当前上下文中不存在(Web应用程序)

我可以推荐一个稍微不同的发送电子邮件的解决方案吗?使用MailDefinitionMailMessage类来创建电子邮件的主体,然后从那里使用EmailSender类以及Sitefinity中的SMTP设置来发送电子邮件。示例代码如下:

using System.Net.Mail;
using Telerik.Sitefinity.Services;
using Telerik.Sitefinity.Web.Mail;
using Telerik.Sitefinity.Configuration;
var smtpSettings = Config.Get<SystemConfig>().SmtpSettings;
MailDefinition mailDef = new MailDefinition()
{
    IsBodyHtml = true,
    BodyFileName = "~/Files/EmailBody.html",
    Subject = "Thanks for Commenting!",
    From = !smtpSettings.DefaultSenderEmailAddress.IsNullOrEmpty() ?  smtpSettings.DefaultSenderEmailAddress : smtpSettings.UserName
};
MailMessage email = mailDef.CreateMailMessage(this.EmailControl.Value.ToString(), new ListDictionary(), this);
EmailSender.Get().Send(email);

ListDictionary被用来用代码中的值替换正文中的值。如果你不需要,你可以只包含一个空字典

相关文章: