2016-11-11 75 views
1

我现在正在开发用户管理功能。我想补充的授权和重定向用户到我的登录页面,如果他试图在登录前访问这样的用户管理页面:如果未登录,将用户重定向到另一个视图

[HttpGet] 
public ActionResult UsersList() 
{ 
    if (Session["UserName"] == null) 
    { 
     RedirectToAction("Login", "Login"); 
    } 
    else 
    { 
     var User = new User(); 
     User.usersList = DBManager.Instance.GetUsersList(); 
     User.PreferedLanguages.Add(new SelectListItem { Text = "ENGLISH", Selected = true, Value = "ENGLISH" }); 
     User.PreferedLanguages.Add(new SelectListItem { Text = "DUTCH", Value = "DUTCH" }); 
     return View(User); 
    } 
} 

但我应该返回正确的操作结果的看法?此代码不能编译,我得到以下错误:

错误4“WebApplication9.Controllers.UserManagementController.UsersList()”: 不是所有的代码路径返回一个值> E:\工作\ WebApplication9 \控制器\ UserManagementController.cs

此时是否有可能返回另一个控制器视图?

+3

'return RedirectToAction(“Login”,“Login”);'(你错过了'return') –

+1

你是否正在使用所有的操作方法?你应该实现某种身份验证(_i.e。formas authentication_)并使用'[Authorize]'属性来为你处理所有事情。 –

+0

@AdilMammadov:它是否适用于asp.net mvc?我是新来的。所以想到通过保持Session的用户名来做到这一点。 – ViVi

回答

1

你应该使用下面的代码:

return RedirectToAction("Login", "Login"); 

,而不是简单RedirectToAction

ActionResult是一组指令,将在动作完成后由动作调用者执行。 RedirectToActionResult(返回类型RedirectToAction)包含应写入Response以执行正确重定向的说明。

据我所知,这是动作调用的工作原理,也许官方文档对此有另一种意见。

+0

感谢您的回复。已经按照Stephen Muecke的评论 – ViVi

+0

@ViVi对其进行了纠正,不客气,这很令人伤心,但我的回答稍晚于Stephen Muecke的评论 –

相关问题