我在将 Dictionary 对象中的数据传递给自定义 ExtendedMembershipProvider 中的 CreateUserAndAccount 方法时遇到问题。在我的帐户控制器中,(发布)注册方法具有以下内容:
Dictionary<string, object> userInfo = new Dictionary<string, object>();
userInfo.Add("Email", model.Email);
userInfo.Add("PasswordQuestion", model.PasswordQuestion);
userInfo.Add("PasswordAnswer", model.PasswordAnswer);
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, userInfo, true);
其中填充了 userInfo 并成功调用了我的自定义提供程序中的 CreateUserAndAccount 方法。
我有两个——也许是相互关联的——问题。
首先,方法签名不一样,provider方法如下:
public override string CreateUserAndAccount(string userName, string password, bool requireConfirmation, IDictionary<string, object> values)
Boolean和Dictionary参数切换了,但是还是达到了方法。如果我更改 Account/Register 方法中的代码以匹配此代码,我会得到:
WebMatrix.WebData.WebSecurity.CreateUserAndAccount(string, string, object, bool)' 的最佳重载方法匹配有一些无效参数。
我很困惑这是怎么发生的,我的问题基本上是到底发生了什么?
其次,当代码到达 CreateUserAndAccount 时,我传递给它的 Dictionary 对象已经转换为 RouteValueDictionary,所有其他参数都按预期出现。
如何将我的 Dictionary 对象取出并访问 Email、PasswordQuestion 和 PasswordAnswer 值?