我有桌面软件开发背景,并且开始学习 ASP.NET MVC。
在我的默认 HomeController 中,我有 Index 操作,其代码如下所示:
if (!Request.IsAuthenticated)
return RedirectToAction("Login", "Account");
换句话说,将用户重定向到“/account/login”。然后,AccountController.Login 操作将处理用户,并在他成功登录后将他发送回 HomeController。
这段代码对我来说很臭,也许只是因为我习惯于在桌面软件中以不同的方式做事。如果我将登录操作的名称更改为“LogOn”会怎样?如果我完全删除 AccountController 并用其他东西替换它会怎样?我将引入一个新错误,但不会出现编译器错误,而且我的单元测试也可能无法捕捉到它。由于我使用字符串来指定控制器和操作名称,因此重构和重新设计更有可能在各处破坏代码。
我想要的是这样的:
if (!Request.IsAuthenticated)
return RedirectToAction(() => AccountController.Login);
但是,我不确定这是否可能,或者这是否是最好的方法。
是我傻了,还是其他人有同样的问题?你怎么做才能绕过它?