asp.net-mvc – ASP.NET MVC中的视图文件/目录结构应该是什么?
我对视图的组织方式感到困惑,因为ASP.NET MVC使用约定来使一切正常工作,所以理解这一点很重要.
在views目录下,有子目录.这些子目录中有视图.我假设子目录映射到控制器,控制器作用于其子目录中包含的视图. 是否出现了对这些目录中包含哪些类型的视图的期望?例如,每个目录的默认页面应该是index.aspx吗?页面是否应遵循命名约定,如Create [controller] .aspx,List [controller] .aspx等?或者没关系? 解决方法
查看目录命名和文件命名很重要,因为ASP.NET MVC框架对它们做出了某些假设.如果您不遵守这些假设,那么您必须编写代码以让框架知道您在做什么.一般来说,除非你有充分的理由不这样做,否则你应该遵守这些假设.
让我们看看最简单的控制器动作: public ActionResult NotAuthorized() { return View(); } 由于在调用View()时未指定视图名称,因此框架将假定视图文件名与Action名称相同.该框架有一个名为ViewEngine的类型,它将提供扩展.默认的ViewEngine是WebFormViewEngine,它将采用该名称并附加.aspx.因此,在这种情况下,完整的文件名将是NotAuthorized.aspx. 但是在哪个文件夹中会找到该文件?同样,ViewEngine提供了这些信息.使用WebFormViewEngine,它将查看两个文件夹:?/ Views / Shared和?/ Views / {controller} 因此,如果您的控制器被称为AccountController,它将在?/ Views / Account中查找 但有时您可能不想遵守这些规则.例如,两个不同的操作可能会返回相同的视图(使用不同的模型或其他内容).在这种情况下,如果您在操作中明确指定视图名称: public ActionResult NotAuthorized() { return View("Foo"); } 请注意,对于WebFormViewEngine,“视图名称”通常与文件名相同,而不是扩展名,但框架不需要其他视图引擎. 同样,您可能还有理由希望应用程序查找视图和非默认文件夹.您可以通过创建自己的ViewEngine来实现.我在this blog post中展示了该技术,但类型名称不同,因为它是为早期版本的框架编写的.然而,基本思想仍然是一样的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 从umbraco搜索中排除节点
- 将ASP.net MVC网站部署到Azure网站的子文件夹中?
- asp.net-mvc – 从MVC Controller调用Web API来构建并传递模
- 如何在asp.net用户控件中使用jQuery ajax?
- ASP.Net Cache是??否在不同的用户会话之间共享?
- asp.net – 从命令行包含项目中的文件
- ASP.NET AJAX(9)-ScriptManagerProxy
- asp.net-mvc-2 – 我应该在我的MVC视图中使用Url.Content()
- asp如何判断进入网站的客户是手机还是pc
- asp.net – 在网站上放置广告的最佳做法?
- asp.net-mvc – 路由测试ASP.NET MVC4
- 如何判断ASP中的页面是否为SSL?
- asp.net-mvc – ASP.NET MVC AjaxForm没有正确更
- asp.net-web-api – 使用ASP.NET WebAPI消费Atla
- asp.net – Orchard CMS Media中的文件大小上传限
- asp.net-mvc – ASP.NET MVC模型绑定器的问题
- asp.net-mvc-3 – 在Application_Start中访问nin
- asp.net – 如何在Firefox中使用Javascript设置D
- asp.net-mvc – Route Constraint Isnt适用于ASP
- ASP.NET Kendo UI上传