【发布时间】:2010-12-20 14:29:58
【问题描述】:
我有一个 MVC 应用程序,它有两个区域 - 管理员和用户。我想做的是在第一次登录时,用户将激活他们的帐户,同意条款和条件等。这个应用程序使用 asp 会员 api。
我在 Account 控制器的 POST 登录操作中插入了一个 IF 语句,但是在调试之后,似乎这个 if 语句从未执行过。如果有人可以看看它,我将不胜感激。我有一种感觉,它可能是我缺少的一些小东西。
用户的登录网址是:
管理员网址是:
但是两者都在帐户控制器中使用相同的登录操作,因此需要使用 if 语句来区分两者。
这是 POST Logon 操作的代码。字符串returnUrl是“/User”而不是我通过代码调试后发现的“User”。
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
string url = returnUrl;
if (url == "/User")
{
ModelContainer ctn = new ModelContainer();
MyApp.Data.User p = ctn.Users.First(t => t.UserID == UserServices.CurrentUserId);
string status = p.AccountStatus;
if (status != "Active")
{
return RedirectToAction("contract", "Home");
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
这里似乎只是在 else 之后跳过:
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
string url = returnUrl;
然后直接跳到最后的 RedirectToAction。
如果有人能发现任何东西,我将不胜感激。如果需要更多信息,请大声喊叫!
【问题讨论】:
-
您可能想要更改您的问题标题。听起来你破坏了编译器。 ;)
标签: c# asp.net-mvc if-statement