1

对于控制器FooBarBaz,我的文件夹结构如下所示:

Views
    Foo
        Index.csthml
    Bar
        Index.csthml
    Baz
        Index.csthml
        _Rarity.cshtml

真的必须这样吗?确定要编辑的正确文件有点痛苦,因为它们中的大多数都被称为Index.cshtml. 理想情况下,我想要更像这样的东西:

Views
    Foo.csthml
    Bar.csthml
    Baz.csthml
    Baz
        _Rarity.cshtml

我知道我可以将完全限定的路径传递给View()Controller 类的方法;即在FooController'sIndex()方法内部,我可以调用this.View("~/Views/Foo.cshtml"). 这是我能得到的最好的吗?

4

2 回答 2

0

这不符合默认 Razor 视图引擎的性质;如上所述,这是使用第一个设置的传统方法。但是,您可以通过自定义 Razor 视图引擎以及在其中查找视图所需的文件夹来构建自己的约定。但是,您在设计中可能遇到的问题是文件名冲突;例如,您可以将 Foo.cshtml 映射到 Foo 控制器 Index 操作,但这意味着您无法轻松地将 Foo 控制器的另一个操作方法映射到没有特殊约定的视图。

结论:是的,可以自定义,但要注意复杂性和边缘情况。

于 2012-11-19T18:32:03.520 回答
0

您可以使用 RouteMap() 来更改每个控制器的默认操作,这样它们就不会全部使用 Index,而是您希望调用的 .cshtml 文件。这仍然应该在不重新发明轮子的情况下利用魔法。

希望这可以帮助...

于 2019-02-08T20:58:59.970 回答