我正在将一个Web应用程序从asp.net转换为MVC3,并试图找出如何设置和访问旧应用程序中配置的配置文件属性。
我可以从旧应用程序访问数据库,我可以使用
使用MVC3创建新用户Membership.CreateUser(model.UserName, model.Password, model.Email, model.SecretQuestion, model.SecretAnswer, true, out createStatus);
这个新用户被放在数据库“USER”表中。我还需要存储有关用户的其他信息,我仍然必须使用在旧应用程序中创建的旧数据库,因此当我们切换到新应用程序时,当前用户仍然可以登录而不会注意到除了某些布局改进之外的更改。
旧数据库中还有一个名为“PROFILE”的表,它存储了其他值,如此
UserId,PropertyNames,PropertyValuesString,PropertyValuesBinary,LastUpdatedDate
DB7E1F8E-FB45-49E5-A2AF-C83A371CC22F,PartnerID:S:0:2:FirstName:S:2:4:LastName:S:6:12:Indexed:S:18:1:,26MiloMinderbinder3,0x, 2010-09-29 21:23:33.737
这是使用在MVC3中不可用的MembershipWizard创建的。我需要找到一种方法来创建具有MVC3的用户,并仍然向该表添加适当的值。
提前感谢您提供的任何帮助。
答案 0 :(得分:0)
您可以创建自己的Membership类...尝试实现MembershipProvider类并在Web.Config中注册它...
这是处理会员资格的非常灵活的方式。我一直都在使用它......
答案 1 :(得分:0)
默认的MVC 3互联网应用程序模板在创建用户的界面中包含一个方法:
public interface IMembershipService
{
int MinPasswordLength { get; }
bool ValidateUser(string userName, string password);
MembershipCreateStatus CreateUser(string userName, string password, string email);
bool ChangePassword(string userName, string oldPassword, string newPassword);
}
其实施方式为:
public MembershipCreateStatus CreateUser(string userName, string password, string email)
{
if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password");
if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email");
MembershipCreateStatus status;
_provider.CreateUser(userName, password, email, null, null, true, null, out status);
return status;
}
所以 - 你需要
将新参数添加(或更改现有方法)到方法签名
将参数添加到接口方法(或在界面上创建新方法)
将函数调用更改为_provider.CreateUser以传入参数