【发布时间】:2011-12-03 21:16:21
【问题描述】:
我有桌面软件开发背景,正在开始学习 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);
但是我不确定这是否可能,或者这是否是最好的方法。
是我傻了,还是其他人也有同样的问题?你会怎么做才能绕过它?
【问题讨论】:
标签: asp.net-mvc refactoring magic-string