Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何指定将为Mvc控制器创建Mvc视图的位置?_Asp.net Mvc_Visual Studio 2008_Views_Location_Controllers - Fatal编程技术网

Asp.net mvc 如何指定将为Mvc控制器创建Mvc视图的位置?

Asp.net mvc 如何指定将为Mvc控制器创建Mvc视图的位置?,asp.net-mvc,visual-studio-2008,views,location,controllers,Asp.net Mvc,Visual Studio 2008,Views,Location,Controllers,重要更新 自MVC2.0 Preview 1发布以来,该功能已作为实际框架本身的一部分以区域的形式实现。更多详细信息请访问Phil Haack的博客 我有一个名为ListManagerController的控制器。此控制器包含名为Index()的ActionResult方法。当我在VisualStudio中的索引上单击鼠标右键并选择“添加视图”时,新视图将在/Views/ListManager/Index中创建 但是,我希望在/views/Manage/ListManager/中创建索引视图和所

重要更新
自MVC2.0 Preview 1发布以来,该功能已作为实际框架本身的一部分以区域的形式实现。更多详细信息请访问Phil Haack的博客

我有一个名为ListManagerController的控制器。此控制器包含名为Index()的ActionResult方法。当我在VisualStudio中的索引上单击鼠标右键并选择“添加视图”时,新视图将在/Views/ListManager/Index中创建

但是,我希望在/views/Manage/ListManager/中创建索引视图和所有后续视图。我将如何做到这一点


编辑:有人指出,该问题与发布的问题重复。一开始我的搜索技能似乎不及格。

视图的位置与您使用的ViewFactory相关。AFAIK web窗体视图引擎不支持区域[在您的示例中管理]

支持这一点,而且非常干净,您还可以混合和匹配web表单和spark视图,这样您就不必重新创建所有视图


更新:菲尔·哈克似乎对如何实现这一目标有自己的见解。他的代码是为RC编写的,但我认为应该可以针对ASP.NET MVC RTM进行编译。

视图的位置与您使用的ViewFactory相关。AFAIK web窗体视图引擎不支持区域[在您的示例中管理]

支持这一点,而且非常干净,您还可以混合和匹配web表单和spark视图,这样您就不必重新创建所有视图


更新:菲尔·哈克似乎对如何实现这一目标有自己的见解。他的代码是为RC编写的,但我认为应该可以针对ASP.NET MVC RTM进行编译。

这个问题在很大程度上是重复的

所以我在这里引用我的答案

我想出了一个不同的解决办法 那不需要我自己动手 查看引擎

基本上,我想保持MVC作为 “惯例”尽可能地驱动,但我 还是想把我所有的工作都安排好 ~/views/Admin下的“Admin”视图 文件夹

例如:

  • ~/Views/Admin/User/
  • ~/Views/Admin/News/
  • ~/Views/Admin/Blog/
我的解决办法是建立一个新的基地 我的特定管理员的类 控制器和“强制”路径到 该控制器的视图

我有一篇博客文章和示例代码 在这里:


这个问题在很大程度上是重复的

所以我在这里引用我的答案

我想出了一个不同的解决办法 那不需要我自己动手 查看引擎

基本上,我想保持MVC作为 “惯例”尽可能地驱动,但我 还是想把我所有的工作都安排好 ~/views/Admin下的“Admin”视图 文件夹

例如:

  • ~/Views/Admin/User/
  • ~/Views/Admin/News/
  • ~/Views/Admin/Blog/
我的解决办法是建立一个新的基地 我的特定管理员的类 控制器和“强制”路径到 该控制器的视图

我有一篇博客文章和示例代码 在这里:


我知道你已经接受了一个答案,但以下是我在实验同一个想法时,在我的帮助下得出的结论

首先,您需要有自己的ViewEngine来查找“视图文件夹”下的文件夹。类似这样:(你会注意到它看起来很像菲尔·哈克的区号)

然后在
Global.asax中,在
Application\u Start
上,用自定义的ViewEngine替换默认的ViewEngine:

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new TestViewEngine());
现在,当您在
Global.asax
中定义路由时,需要设置一个
root
值,指示要在视图文件夹下查找的文件夹,如下所示:

routes.MapRoute(
    "ListManager",
    "ListManager/{action}/{id}",
    new { controller = "ListManager", action = "Index", id = "", root = "Manage" }
 );

我知道你已经接受了一个答案,但以下是我在实验同一个想法时,在我的帮助下得出的结论

首先,您需要有自己的ViewEngine来查找“视图文件夹”下的文件夹。类似这样:(你会注意到它看起来很像菲尔·哈克的区号)

然后在
Global.asax中,在
Application\u Start
上,用自定义的ViewEngine替换默认的ViewEngine:

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new TestViewEngine());
现在,当您在
Global.asax
中定义路由时,需要设置一个
root
值,指示要在视图文件夹下查找的文件夹,如下所示:

routes.MapRoute(
    "ListManager",
    "ListManager/{action}/{id}",
    new { controller = "ListManager", action = "Index", id = "", root = "Manage" }
 );

您希望Visual Studio只在该文件夹中创建视图,还是希望MVC框架在“视图文件夹”下的文件夹中查找视图,然而,这是由于缺乏理解,因为我假设创建视图的位置将自动定义到视图的路径。我最终重构了站点的工作方式,以适应普通的Mvc架构。但是,这两个答案都为上述问题提供了可行的解决方案。可能重复的是您希望Visual Studio设置仅在该文件夹中创建视图,还是希望MVC框架在“视图文件夹”下的文件夹中查找视图?问题暗示了这两种情况,然而,这是由于缺乏理解,因为我假设创建视图的位置将自动定义到视图的路径。我最终重构了站点的工作方式,以适应普通的Mvc架构。然而,这两个答案都为上述问题提供了可行的解决方案。spark解决方案的可能副本看起来很有趣,但据我所知,它将大部分工作放在了视图层,这是我想要避免的。然而,这是值得调查的更多细节,我今天会看一些样本。我看了菲尔的博客文章,它可能正是我需要的。我今天也会看看他的原型,看看它是否有效。我选择了这个作为正确答案,因为解决方案是由Mvc团队的某个人提供的;然而,你说的m是什么意思