ASP MVC 5 - 视图文件夹之外的部分视图文件

时间:2017-10-28 12:15:37

标签: asp.net asp.net-mvc asp.net-mvc-4 razor

我有一个部分视图文件,它接收保存在views目录之外的@model - 实际存储在app_data中。

然而我收到错误:

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

2 个答案:

答案 0 :(得分:3)

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

对它进行排序的一种方法是将Views / web.config复制到App_Data。

答案 1 :(得分:2)

App_Data 是ASP.NET中的一个特殊目录,它应该存储XML文件/ mdf文件等数据文件来存储数据。它也限制访问。

您不应该在该文件夹中放置任何UI图层问题(视图)。 Asp.NET MVC有一个UI层的约定,即MyPartialViews目录。因此,请使用该位置来保留您的观点。

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