我有一個控制器接受用戶名並通過並檢查數據庫。如果用戶通過身份驗證,我想調用另一個控制器上的重載操作。如何在控制器之間傳遞數據和重載操作?
我的最終目標是根據MySQL數據庫中的舊錶對用戶進行身份驗證(我有這部分工作)。一旦用戶通過身份驗證,我希望能夠「自動」將用戶轉發到內置的MVC註冊頁面,但我想使用從第一個控制器獲得的數據填充視圖中的一些字段(舊的數據庫信息) 。
當我嘗試類似下面的內容時,我得到有關Register()方法不明確的錯誤。我也嘗試使用[ActionName(「Register2」)]屬性,但然後返回的錯誤說它找不到一個名爲Register2的方法。
public class MigrateAccountController : Controller
{
OldUserRepository oldDb = new OldUserRepository();
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(User u)
{
if (oldDb.isValid(u.username, u.password))
return RedirectToAction("Register", "Account", u);
return View(u);
}
}
public class AccountController : Controller
{
public IFormsAuthenticationService FormsService { get; set; }
public IMembershipService MembershipService { get; set; }
protected override void Initialize(RequestContext requestContext)
{
if (FormsService == null) { FormsService = new FormsAuthenticationService(); }
if (MembershipService == null) { MembershipService = new AccountMembershipService(); }
base.Initialize(requestContext);
}
public ActionResult Register(User u)
{
return View(u);
}
public ActionResult Register()
{
ViewBag.PasswordLength = MembershipService.MinPasswordLength;
return View();
}
}
完美無缺。現在,如果只有我可以接受訓練,像專家一樣思考...... =) – Pete 2011-03-13 22:56:41
@Pete,別擔心,它會隨着時間和練習而來。 – 2011-03-13 23:00:45