I had a problem and it's been solved in the bellowing link:
The activationCode is null in my method input when I click the email Verification link
But I have another question. When I added another route like this:
routes.MapRoute( name: "Password", url: "{controller}/{action}/{passwordResetCode}", defaults: new { controller = "Authentication", action = "ResetPassword" } );
The previous route doesn't work. I mean it again gets null value. Whenever I want to call its method I bring its route to the top of the other routes manually! And it gets work! You know I have to change each route's priority when I want to call its method. O.O Any Idea? Thanks In advance.
Thi is the total rout.config in my project.
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Password",
url: "{controller}/{action}/{passwordResetCode}",
defaults: new { controller = "Authentication", action = "ResetPassword" }
);
routes.MapRoute(
name: "Activation",
url: "{controller}/{action}/{activationCode}",
defaults: new { controller = "Authentication", action = "VerifyAccount" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
And these are ActionMethods:
[HttpGet]
public ActionResult ResetPassword(string passwordResetCode)
{
ResetPasswordViewModel resetPasswordViewModel = new ResetPasswordViewModel();
ResponseMessage<User> passwordResetRequestedUser = _userService.ResetPasswordCode(passwordResetCode);
if (passwordResetRequestedUser.IsSuccess )
resetPasswordViewModel.ResetCode = passwordResetCode;
return View(resetPasswordViewModel);
}
[HttpGet]
public ActionResult VerifyAccount(string activationCode)
{
if (activationCode != null)
{
ResponseMessage<User> verifiedUser = _userService.VerifyAccount(activationCode);
ModelState.AddModelError("AccountVerification", verifiedUser.ErrorMessages[0]);
return View(verifiedUser.Result.ConvertToUserViewModel());
}
return new HttpNotFoundResult();
}