姓名'邮箱'在当前上下文中不存在(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似乎找不到它
我可以推荐一个稍微不同的发送电子邮件的解决方案吗?使用MailDefinition
和MailMessage
类来创建电子邮件的主体,然后从那里使用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
被用来用代码中的值替换正文中的值。如果你不需要,你可以只包含一个空字典