Asp.net MVC控制器和视图应该是1对1的关系吗?

Asp.net MVC控制器和视图应该是1对1的关系吗?,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我目前正在使用asp.NET MVC构建一个内容管理系统,该系统是网站的一部分,我的工作是将所有视图重新创建为部分视图,因为这似乎破坏了网站地图的工作方式 例如,my FAQAdminController有以下视图:Index、AddFAQ、EditFAQ、ConfirmDeleteFAQ,这些视图必须成为局部视图 我被告知,每个控制器都应该有一个视图,所有其他以要显示的页面内容结尾的表单或操作都应该作为部分视图实现 在发布之前我已经检查过了,没有任何文档、文章、wiki等问题可以直接回答我,每

我目前正在使用asp.NET MVC构建一个内容管理系统,该系统是网站的一部分,我的工作是将所有视图重新创建为部分视图,因为这似乎破坏了网站地图的工作方式

例如,my FAQAdminController有以下视图:Index、AddFAQ、EditFAQ、ConfirmDeleteFAQ,这些视图必须成为局部视图

我被告知,每个控制器都应该有一个视图,所有其他以要显示的页面内容结尾的表单或操作都应该作为部分视图实现

在发布之前我已经检查过了,没有任何文档、文章、wiki等问题可以直接回答我,每个控制器是否有多个视图正在破坏MVC模型

严格来说,MVC控制器和视图应该是1对1的关系吗

我被告知,每个控制器都应该有一个视图,所有其他以要显示的页面内容结尾的表单或操作都应该作为部分视图实现

那是胡说八道

严格来说,MVC控制器和视图应该是1对1的关系吗

绝对不是。以逻辑一致的方式设计应用程序


控制器通常处理许多操作并返回许多不同的视图。您可以考虑使用FAQ控制器来呈现所有视图,对于用户和管理员,

< P>我认为这违背了MVC的目的。As控制器应该能够决定使用哪个视图来表示模型。

MVC控制器应该能够支持多个视图。

MVC控制器可以并且应该支持多个视图。让单个控制器支持的视图与同一业务对象或流程相关是很有帮助的

考虑下面的例子

public class ExampleController : Controller
{
    public ActionResult Index()
    {
            //get list of objects
            return View(); // uses a view called Index
    }

    public ActionResult Edit(string id)
    {
            Object target = ObjectManager.GetObject(id);
            if (target == null)
            {
                    return New();//view for creating a record
            }
            else
            {
                    ViewData.Add("detail", target);
                    return View("Detail");//using a view not name-mapped to controller method name
            }
    }

    public ActionResult New()
    {
            return View();  
    }

}

在web API中,一个控制器应该在一个端点上用多个动词(如果存在)表示一个端点。在经典的MVC中,您可以使用相同的类比,但环境却大不相同。每个控制器一个视图(+页面视图)是使应用程序干净且设计良好的好方法,但您不仅限于此。选择和选择要使用的视图并不是控制器的决定。@mko-那么您会选择谁?@Henk Holterman请向我们解释控制器如何“选择”要使用哪个视图?
返回视图(“MyView”,myModel)
。或者使用重定向。@Henk Holterman这是一个简单的操作内调用,与控制器能够选择视图无关。控制器会根据什么逻辑选择不同的视图?没有一个控制器没有选择任何东西,这是一个糟糕的词语选择。