ASP.NET MVC 3 文件夹结构

Posted

技术标签:

【中文标题】ASP.NET MVC 3 文件夹结构【英文标题】:ASP.NET MVC 3 folder structures 【发布时间】:2011-11-09 13:32:45 【问题描述】:

在了解传统 ASP.NET 网络表单的背景后,我正在学习 MVC 框架。我正在开发一个具有公共域的典型示例电子商务网站,然后能够注册一项服务,该服务将提供对安全会员区域的访问。我有几个问题:

在 ASP.NET 中,私有成员页面通常与公共域页面分开,方法是将它们放在自己的子文件夹中,并在 web.config 中将此子文件夹标记为需要身份验证,如下所示:

location path="MembersArea"
    system.web
        authorization
            deny users="?"
        authorization
    system.web
location

人们通常也将他们的安全成员区域页面放在 MVC 中的一个子文件夹中吗?或者您是否将公共页面和私有页面混合在同一个文件夹中,依赖以及成员资格和身份验证标签?

我的 MVC 网站将有一个安全的会员区。但主页等将只是标准的 html。创建站点时,您是否通常将所有页面标记为 MVC,以防将来可能希望使用动态数据进行增强?还是出于性能原因或类似原因,您是否将纯 HTML 文件保留为纯 HTML?

感谢您对此的任何建议

【问题讨论】:

【参考方案1】:

忘记 index.html 的、文件和诸如此类的东西。在 MVC 中,您使用控制器并告诉它要呈现的视图。

在 MVC 中,您不保护视图本身,而是保护控制器操作。查看 Authorize 属性。您不必为公共或私人分开文件。

您甚至可以滚动自己的授权属性,因此您可以执行以下操作:

[Administrators]
public class HomeController : Controller

    public ActionResult Index()
    
    

您可以在控制器级别或个人操作级别进行保护。

这听起来像中文,除非你对 MVC 有更正式的介绍。我推荐 Phil Haack 的 new MVC3 book。

【讨论】:

sergio,根据我的第二个问题,HTML 页面的一般共识是什么。如果我有一组不包含动态数据的页面,我应该使用纯 HTML 页面还是坚持使用视图/控制器? @Slim:即使你有静态 HTML,也要创建一个控制器可以调用的视图,然后推出一些好的 HTML。您想使用 Controller,因为这样您就可以从 ASP.net 中非常好的路由引擎中受益【参考方案2】:

不,所有视图都应位于与公共和私有相同的文件夹结构中。您想查看Authorize 属性。您可以将控制器/动作保持在同一区域。

我会完全按照 MVC 来做这个网站。

【讨论】:

嗨,丹尼尔,感谢您这么快回复,您能否详细说明一下,因为我发现您的答案有点模棱两可(可能我很厚!)【参考方案3】:

忘记你所知道的关于 ASP.NET WebForms 的一切。 MVC 有一种完全不同的方法,它不像传统的 ASP.NET WebForms 那样使用文件夹和文件直接映射到资源。 MVC 中没有“页面”,每个 URL 调用控制器上的操作,控制器可以返回任何结果(作为视图,类似于“页面”,或任何其他类型的结果,例如文件下载、重定向、等等。)。控制器动作和视图之间没有 1:1 的映射,一个动作可以返回任何视图或结果。

MVC 的实现方式是通过控制器,您可以在控制器(对于完整类)或特定控制器操作(方法)上使用授权属性。您甚至可以轻松实现自己的身份验证属性。

【讨论】:

以上是关于ASP.NET MVC 3 文件夹结构的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案 (精髓)

Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案 [转]

MVC-3 ASP.NET 共享视图-重定向-Razor

ASP.NET MVC 4 (一)路径映射

ASP.NET从MVC5升级到MVC6

ASP.NET MVC 4 (一)路径映射