c#mvc区域文件夹结构和类名
我有一个web项目,其中文件夹是在c#mvc区域文件夹结构和类名,c#,.net,asp.net-mvc,directory-structure,C#,.net,Asp.net Mvc,Directory Structure,我有一个web项目,其中文件夹是在区域中构建的。在那里,我有两个主要文件夹:Admin和Home。在主页部分,我会把所有关于最终用户的信息都放进去,而管理员是我的后台。在Admin文件夹中,我将模型和视图划分为子文件夹。如以下示例所示: Areas - Admin - Controllers - CategoryController.cs - UserController.cs - Models - Category
区域中构建的。在那里,我有两个主要文件夹:Admin和Home。在主页部分,我会把所有关于最终用户的信息都放进去,而管理员是我的后台。在Admin文件夹中,我将模型和视图划分为子文件夹。如以下示例所示:
Areas
- Admin
- Controllers
- CategoryController.cs
- UserController.cs
- Models
- Category
- Edit.cs
- Create.cs
- Index.cs
- User
- Edit.cs
- Create.cs
- Index.cs
- Views
- Category
- Edit.cshtml
- Create.cshtml
- Index.cshtml
- User
- Edit.cshtml
- Create.cshtml
- Index.cshtml
- Home
...
我想到目前为止还不错。因为我正在使用LINQtoSQL,并且其中有一个名为Category的表,所以名称空间和表名给我带来了一些问题。在Category/Edit.cs中说:
namespace MyProject.Areas.Admin.Models.Category
{
public class Edit
{
public IQuaryable<Category> // this throws an intellisense error since it
// understands "Category" as the folder/namespace
// instead of the table name in linq to sql class
名称空间MyProject.Areas.Admin.Models.Category
{
公共类编辑
{
public IQuaryable//这会引发intellisense错误,因为
//将“类别”理解为文件夹/命名空间
//而不是linq to sql类中的表名
嗯,我知道解决方案很简单:将表名更改为其他名称。但是为了代码的可读性,我希望有一个清晰的表名和一个清晰的URL,我希望文件夹名保留为类别。因此,有人能告诉我如何区分名称空间和表类吗
编辑
虽然我喜欢这个答案,但我重新设计了我的文件夹结构和类名。当我保持L2S类名不变时,我将模型命名为modelcontegory
,并试图避免在models文件夹中使用L2S类名的子文件夹。此外,我在modelcontegory中合并了Edit.cs-Create.cs-Index.cs
e> 因为它们或多或少使用相同的模型。因此,我删除了模型中的Category子文件夹,问题就出现了。添加一个using语句,让编译器知道在哪里可以找到Category
实体/表:
using MyProject.SomeLinqToSqlNamespace;
namespace MyProject.Areas.Admin.Models.Category
{
public class Edit
{
public IQueryable<Category> // this throws an intellisense error since it
// understands "Category" as the folder/namespace
// instead of the table name in linq to sql class
// ...other code
}
}
使用MyProject.SomeLinqToSqlNamespace;
命名空间MyProject.Areas.Admin.Models.Category
{
公共类编辑
{
public IQueryable//这会引发intellisense错误,因为
//将“类别”理解为文件夹/命名空间
//而不是linq to sql类中的表名
//…其他代码
}
}
或者,使用内联命名空间作为类的前缀:
public IQueryable<MyProject.SomeLinqToSqlNamespace.Category>
公共IQueryable
…但阅读起来可能会比较混乱。除了Yuck的建议之外,您还可以添加一个带有别名的using语句,以减少代码的冗长,例如:
using L2S = MyProject.SomeLinqToSqlNamespace;
现在您可以将category实体简单地称为L2S.category好吧,我猜名称空间MyProject.Areas.Admin.Models.category已经定义了一个查找编译器的位置,因此将有两个已定义的类别。如何处理?每次创建类时是否必须更改名称空间?不,但您不能只说Category
如果存在多种可能性。编译器需要更多信息来区分MyProject.Areas.Admin.Models.Category
和MyProject.something.something.Linq.Category
。由于您在Edit
类定义中提供了一个名称空间,因此它将首先在那里查找Category
。