为什么从行动中回归其他观点是不好的?

时间:2014-06-05 08:28:56

标签: asp.net-mvc asp.net-mvc-4

我在MVC工作,最近有一个人审查了我的代码。在我的控制器操作的某些地方,我正在返回其他视图,例如在Index操作中的以下代码中我返回List视图:

public virtual ActionResult Index(Student student)
{
    // Logic
    return View("List", student);
}

为什么这不是一个好习惯?我不知道为什么这是错的。请指导我,以便我能纠正这一点。

3 个答案:

答案 0 :(得分:1)

将不同视图返回到默认操作视图没有任何问题。我能想到的唯一可能让一些人感到不安的是它没有遵循MVC范式而不是配置。

如果某些代码的行为名称与其对应的视图名称不同,则可能难以遵循某些代码,例如:

public ActionResult Index(int id)
{
    //logic
    return View("StupidName");
}

约定会让你认为索引操作会返回索引视图,虽然它没有,现在程序员必须去寻找StupidName视图。对于一个动作来说,这似乎无害,但如果某人编写了多个返回不同命名视图的动作,则可能难以跟踪项目流程。

或者你可以问代码审查员为什么他认为这是一个不好的做法。沟通是团队的关键。

答案 1 :(得分:0)

就个人而言,我认为这与一样没有错,因为编译视图输入的逻辑不是重复

如果您必须复制大量代码以确保视图的模型正确,并且这不是您的操作的责任,那么您宁愿重定向到操作而不是调用直接观点。

如果不是这种情况,或者存在非常具体的情况,我不明白为什么这是一个问题。

请考虑以下示例:

  1. 您有一个错误对话框视图。如果模型只包含定义消息的单个属性,则直接调用视图没有问题;
  2. 如果你有相同的对话框,但为了创建模型你必须从数据库中获取一些一般信息,有一些自定义逻辑等,那么最好调用(或创建一个)动作这一切都是为了你。此外,您对该视图的调用次数可能很重要。

答案 2 :(得分:0)

试试这个:

public virtual ActionResult Index(Student student)
{
    // Logic
    return RedirectToAction("List");
}