我在MVC工作,最近有一个人审查了我的代码。在我的控制器操作的某些地方,我正在返回其他视图,例如在Index
操作中的以下代码中我返回List
视图:
public virtual ActionResult Index(Student student)
{
// Logic
return View("List", student);
}
为什么这不是一个好习惯?我不知道为什么这是错的。请指导我,以便我能纠正这一点。
答案 0 :(得分:1)
将不同视图返回到默认操作视图没有任何问题。我能想到的唯一可能让一些人感到不安的是它没有遵循MVC范式而不是配置。
如果某些代码的行为名称与其对应的视图名称不同,则可能难以遵循某些代码,例如:
public ActionResult Index(int id)
{
//logic
return View("StupidName");
}
约定会让你认为索引操作会返回索引视图,虽然它没有,现在程序员必须去寻找StupidName视图。对于一个动作来说,这似乎无害,但如果某人编写了多个返回不同命名视图的动作,则可能难以跟踪项目流程。
或者你可以问代码审查员为什么他认为这是一个不好的做法。沟通是团队的关键。
答案 1 :(得分:0)
就个人而言,我认为这与一样没有错,因为编译视图输入的逻辑不是重复。
如果您必须复制大量代码以确保视图的模型正确,并且这不是您的操作的责任,那么您宁愿重定向到操作而不是调用直接观点。
如果不是这种情况,或者存在非常具体的情况,我不明白为什么这是一个问题。
请考虑以下示例:
答案 2 :(得分:0)
试试这个:
public virtual ActionResult Index(Student student)
{
// Logic
return RedirectToAction("List");
}