Asp.net ASP MVC 5-视图文件夹外的部分视图文件

Asp.net ASP MVC 5-视图文件夹外的部分视图文件,asp.net,asp.net-mvc,asp.net-mvc-4,razor,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我有一个局部视图文件,它接收保存在views目录之外的@model,实际存储在app_数据中 但是我得到了一个错误: The name 'model' does not exist in the current context Source File: ...\app_data\_DefaultLayout.cshtml 下面是我的代码: @Html.Partial("~/app_data/_DefaultLayout.cshtml"), Model) 默认布局如下所示: @using

我有一个局部视图文件,它接收保存在views目录之外的@model,实际存储在app_数据中

但是我得到了一个错误:

The name 'model' does not exist in the current context
Source File: ...\app_data\_DefaultLayout.cshtml
下面是我的代码:

 @Html.Partial("~/app_data/_DefaultLayout.cshtml"), Model)
默认布局如下所示:

 @using System.Web.Mvc
 @using System.Web.Mvc.Html
 @model MyApp.ViewModels.CreateCaseViewModel

 // some html and razor code

此异常是cshtml文件上的编译错误。视图无权访问模型类型。如果检查解决方案资源管理器,则有两个web.config文件,一个在“视图”文件夹中,另一个在根级别


排序的一种方法是将Views/web.config的副本复制到App_数据中。

App_Data是ASP.NET中的一个特殊目录,用于存储数据文件,如XML文件/mdf文件以存储数据。它也限制了访问

您不应该将任何UI层关注点(视图)放在该文件夹中。Asp.NET MVC为您的UI层提供了一个约定,即
~/Views
目录。因此,使用该位置保留您的视图


如果绝对需要,您可以将视图文件放在应用程序中几乎任何位置(除了那些系统目录),例如,您可以创建一个名为
MyPartialViews
的目录,并将局部视图放在那里,并引用其完整路径。需要记住的重要一点是,您需要在该文件夹中有一个web配置(从
~/Views
中复制一个并将其放在那里)。web配置中有许多必要的元素,包括所有视图的
pageBaseType

是的,我知道这个约定。但是,我需要允许用户上载布局文件,出于明显的安全原因,我无法授予他们在“视图”文件夹中上载布局文件的权限。您不应允许用户上载布局文件。如果他们上传一些文件,其中包含一些递归循环的C代码,会怎么样?如果它有从应用程序根目录读取文件并在ui中显示的代码,该怎么办?代码在服务器中执行,人们可能会误用它。这是一个安全问题。如果你关心的是HTML标记/样式,你应该考虑一个编辑器用户界面,他们可以编辑页面(像一个富文本编辑器),这样你就可以在一个表中存储这个标记并根据需要来渲染它(比如博客)。我需要他们能够布局一个表单,其中表单的结构被存储为XML或JSON。使用razor比xslt容易得多,这就是为什么我要使用razor存储布局。另一种选择是使用xslt构建表单,并允许用户上传和使用xslt文件来布局表单。xslt是否更安全?