ASP.NET MVC 3和App_Code文件夹

11 浏览
0 Comments

ASP.NET MVC 3和App_Code文件夹

在ASP.NET Webform中,App_Code是放置代码并在运行时使用的标准文件夹。但是我认为在ASP.NET MVC中,这个文件夹有所不同,我的问题是:

  • 在ASP.NET MVC中,我应该把我的代码(扩展方法、辅助函数等)放在哪里?当我把代码存储在App_Code文件夹中时,我无法在controller中使用它们,但在views中可以正常工作。
  • 关于Entity Framework,同样的问题,我应该把edmxtt文件放在哪里?我不使用Code-First。

更新:

经过一些搜索,最终我在我的解决方案中创建了一个新的类库项目,代码在所有controllersviews中都可以使用。我仍然不知道为什么App_Code中的代码在控制器中不可用。

0
0 Comments

ASP.NET MVC 3中存在App_Code文件夹的原因是为了实现动态编译(在运行时)。这是App_Code存在的主要原因,也是它与其他文件夹不同的地方。在任何其他文件夹中放置的代码文件都需要标记为“Compile”操作来进行编译,而在App_Code中则不需要,事实上,大多数App_Code中的文件甚至不是项目的一部分。

在ASP.NET MVC项目中,你可以使用.cshtml扩展名来命名你的代码文件,并将其放置在App_Code文件夹中,它也可以正常工作。

然而,某些情况下了一个问题:“为什么App_Code中的“Startup.cs”文件可以正常工作呢?”

0
0 Comments

在ASP.NET MVC 3项目中,有一个问题是无法识别App_Code文件夹中的类Utility.cs。有人尝试将Utility.cs文件的Build Action从"Content"更改为"Compile",这样问题得到了解决。但是另一个人在他的项目中尝试这样做时,却遇到了"The call is ambiguous between the following methods or properties"的错误。

这个问题的出现原因是App_Code的目的被打破了。App_Code文件夹的存在是为了能够在运行时动态编译代码文件,而不是将它们作为项目的一部分。因此,即便没有将它们设置为Compile Build Action,也应该能够将代码文件放在App_Code文件夹中。

解决这个问题的方法是确保将代码文件放在App_Code文件夹中,并且不要改变它们的Build Action。这样就能够正常识别App_Code文件夹中的类。

0
0 Comments

在ASP.NET MVC 3中,App_Code文件夹不再是必需的,因为它有一个特殊的意义,即“不要向Web浏览器提供这些文件”。在大多数情况下,ASP.NET MVC不会直接向浏览器提供文件,因此不再需要App_Code文件夹。在ASP.NET MVC中,可以将代码文件放在任何文件夹中,因为这些文件将被编译成一个DLL文件,通常不会发布到网站本身。

另一个解决方法是使用独立的库。如果有一些代码文件不包含在DLL文件中,仍然存在于Web应用程序中,那么可以将这些文件放在任何地方。是否有一些标准的位置,Web开发人员希望代码放在哪里?比如App_Code文件夹?Helpers文件夹?从微软的一些示例中可以看到,有一些文件夹如Helpers和Models。

为什么会有不包含在DLL文件中的代码?即使是在代码后台也会被编译成DLL文件。

我可以这样做。那么在Web应用程序中,除了Global.asax.cs文件之外,最佳做法是没有单个文件包含代码吗?

我真的不知道你在说什么...当然你可以在Web应用程序中有代码,它们只是被编译到应用程序的DLL文件中。它们不需要在App_Code文件夹中。

你没有解释App_Code文件夹为什么存在。它是一个特殊的地方,用于存放代码文件以进行动态编译(在运行时)。这是App_Code存在的首要原因。你可以将代码放在任何文件夹中,但是必须使用Compile动作来标记它进行编译,而在App_Code文件夹中,这是不必要的,实际上,大多数文件都不是项目的一部分。

0