我正在尝试以编程方式为我的Umbraco网站创建一个新成员,但我不确定我是否正确地执行此操作。
我的代码如下所示:
MemberType demoMemberType = new MemberType(1040); //id of membertype ‘demo’
Member newMember = Member.MakeNew(newEmployee.FirstName + " " + newEmployee.LastName, demoMemberType, new umbraco.BusinessLogic.User(0));
newMember.Email = "test@testmail.com";
newMember.Password = "password";
newMember.LoginName = "Test";
newMember.getProperty("firstName").Value = "test";
newMember.Save();
但是当我运行我的代码时,我看不到任何出现在我的Umbraco中的东西。有人可以告诉我我做错了什么吗?
答案 0 :(得分:11)
如果您使用umbraco 7,最好使用会员服务。以下是您可以采用的简单方法。
public int RegisterMember(string memberName, string emailAddress, string memberPassword, string memberTypeAlias, string memberGroupName)
{
int umbracoMemberId = -1;
if (!MemberExists(emailAddress))
{
IMember newMember = ApplicationContext.Current.Services.MemberService.CreateMember(emailAddress, emailAddress, memberName, memberTypeAlias);
try
{
ApplicationContext.Current.Services.MemberService.Save(newMember);
ApplicationContext.Current.Services.MemberService.SavePassword(newMember, memberPassword);
ApplicationContext.Current.Services.MemberService.AssignRole(newMember.Id, memberGroupName);
umbracoMemberId = newMember.Id;
}
catch (Exception ex)
{
throw new Exception("Unable to create new member " + ex.Message);
}
}
return umbracoMemberId;
}
public bool MemberExists(string emailAddress)
{
return (ApplicationContext.Current.Services.MemberService.GetByEmail(emailAddress) != null);
}
答案 1 :(得分:3)
主题非常复杂,但以下是您的模型和控制器的一些代码,它们可以让您走上正确的轨道。希望你对MVC了解得足够多。
您的模型可能包含以下内容,并使用视图中的输入填充
using System.ComponentModel.DataAnnotations;
using System.Web;
namespace MyProject.Models
{
public class MemberModel
{
[Required]
public string Name { get; set; }
[Required]
[EmailAddress]
public string Email { get; set; }
[Required]
public string Password { get; set; }
}
}
您的控制器可能如下所示:
using System.Web.Mvc;
using MyProject.Models;
using Umbraco.Web.Mvc;
namespace MyProject.Controllers
{
public class MemberController : SurfaceController
{
public ActionResult SignUp(MemberModel model)
{
if (!ModelState.IsValid)
return CurrentUmbracoPage();
var memberService = Services.MemberService;
if (memberService.GetByEmail(model.Email) != null)
{
ModelState.AddModelError("", "Member already exists");
return CurrentUmbracoPage();
}
var member = memberService.CreateMemberWithIdentity(model.Email, model.Email, model.Name, "MyMemberType");
memberService.Save(member);
memberService.SavePassword(member,model.Password);
Members.Login(model.Email, model.Password);
return Redirect("/");
}
}
}
答案 2 :(得分:0)
根据Umbraco版本,提供的代码示例已过期。
Umbraco 4改变了Umbraco会员模型以使用ASP.NET Membership Provider模型,意思是所有抽象类中的哪一个 提供的开箱即用的ASP.NET能够访问 Umbraco成员。在MSDN(以及其他方面)上有很多好的资源 使用ASP.NET成员资格的网站,建议的起点是 这里。
文章: