当我使用ASP.Net提供项目名称'MvcApplication'时,为什么会出现CS0426错误?

时间:2017-01-21 06:47:29

标签: asp.net-mvc web-applications visual-studio-2015 namespaces

这真的很奇怪。听起来,我尝试使用Visual Studio 2015 (Enterprise)创建名为 MvcApplication 的项目/解决方案。我选择MVC模板并保留所有默认值。

它成功创建。我构建解决方案没有任何错误或警告。当我运行项目(开始调试)时,它加载ASP.NET MVC主页,这很好。 enter image description here

当我单击立即注册时会抛出错误CS0426:类型名称ModelsMvcApplication类型中不存在。

在源文件中的某些位置在temp文件夹中。 (附上截图)。 enter image description here

到目前为止,我尝试使用以下
来解决这个问题 1.关闭解决方案并重启机器。 (没用) 2.删除所有临时文件(不起作用)
3.创建具有不同名称(工作)的其他应用程序
4.在上面的解决方案中添加同名“MvcApplication”的新项目(同样的问题 - 不起作用,但它证明了名称MvcApplication存在问题。)
5.谷歌它(关于CS0426错误没什么帮助) - 它没有任何意义。 (为什么?)
6. MSDN,StackOverflow,其他博客报告错误但不是原因或解决方案?仍然疑惑为什么?

我希望我可以提供帮助,但我需要确认您无法在您的解决方案中将您的项目命名为“MvcApplication”并希望能够正常工作。我错了。但在这种情况下我需要更多证据。

任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

假设Register视图具有此模型绑定:

@* Register view *@
@model MvcApplication.Models.RegisterViewModel

由于您有MvcApplication作为项目/解决方案名称(包括项目命名空间),因此在定义视图模型时,MvcApplication中已经提供的Global.asax类可能存在命名冲突:

// Global.asax
namespace MvcApplication
{
    public class MvcApplication : System.Web.HttpApplication
    {
        // other stuffs here
    }
}

// Model class
namespace MvcApplication.Models // ==> potential naming collision when being used in view
{
    public class RegisterViewModel
    {
       // some properties here
    }
}

为避免与上面显示的MvcApplication类发生冲突,您可以在视图页中使用global这样的完全限定名称:

@model global::MvcApplication.Models.RegisterViewModel

或只是将项目名称空间更改为其他名称。

类似问题:

The type name 'Models' does not exist in the type 'System.Web.Helpers.Chart'