使用VS2012新建了一个Asp.net mvc5的项目,并把项目的命名空间名称更改了(Src更改为UXXXXX),然后就导致了以下错误
刚开始以后是项目的属性中的命名空间没有更改过来的问题,但我在重命名时更改的是全局的名称,而且所有文件的命名空间都已经更改过来了
![ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚 ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODJPVGt5T1M4eU1ERTFNVEV2TmprNU1qa3RNakF4TlRFeE1EWXhOakExTURJNU16QXRNVEU1TkRZeU9EQXdMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
![ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚 ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODJPVGt5T1M4eU1ERTFNVEV2TmprNU1qa3RNakF4TlRFeE1EWXhOakExTURRd09EWXRNVE00TXpBMU16QXpNaTV3Ym1jPS5qcGc%3D.jpg?w=700&webp=1)
稍候思考了一下并在解决方案里搜索了"Src"除了页面中引用的js脚本外还发现Views/web.config文件中包含"Src"
![ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚 ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODJPVGt5T1M4eU1ERTFNVEV2TmprNU1qa3RNakF4TlRFeE1EWXhOakExTURVME16QXRNVE14T0RJeE16QXpNeTV3Ym1jPS5qcGc%3D.jpg?w=700&webp=1)
![ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚 ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODJPVGt5T1M4eU1ERTFNVEV2TmprNU1qa3RNakF4TlRFeE1EWXhOakExTURZMk5Ea3RNVGszTXpjd09EQTROQzV3Ym1jPS5qcGc%3D.jpg?w=700&webp=1)
Asp.net MVC自动生成的代码如下,可以看到自动生成的代码将Views/web.config里引入的命名空间合并到了View页面代码中
个人猜想这样做的原因是在views/web.config里设置的命名空间,就可以在View模板中直接使用配置文件中设置的命名空间下的类型
![ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚 ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODJPVGt5T1M4eU1ERTFNVEV2TmprNU1qa3RNakF4TlRFeE1EWXhOakExTURnME56Y3RNakF4TkRFNE9USXhOQzV3Ym1jPS5qcGc%3D.jpg?w=700&webp=1)
做了个试验(确保Views/web.config里没有引用System.Text命名空间):
将View中的的内容全部清空(包含_ViewStart.html和_Layout.cshtml等)
将views/Login.schtml内容清空并写入以下内容,然后重新生成并在浏览器里查看,就会出现以下错误(原因是StringBuilder没有引用命名空间System.Text)
![ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚 ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODJPVGt5T1M4eU1ERTFNVEV2TmprNU1qa3RNakF4TlRFeE1EWXhOakExTURrek1qRXROemt3T1RBeU9Ua3pMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
![ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚 ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODJPVGt5T1M4eU1ERTFNVEV2TmprNU1qa3RNakF4TlRFeE1EWXhOakExTVRBek5USXRNVFV6TkRVd01UYzFOUzV3Ym1jPS5qcGc%3D.jpg?w=700&webp=1)
解决办法有两种
- 在Views/web.config中导入System.Text(你需要的命名空间)
- 在视图模板中使用完整的类型名(System.Text. StringBuilder)来使用StringBuilder
@{
DateTime d= DateTime.Now;
//必须在Views/web.config 配置文件中设置引用System.Text命名空间否则将报错
// <system.web.webPages.razor>
// <pages pageBaseType="System.Web.Mvc.WebViewPage">
// <namespaces>
// <!--在全局视图模板中引用命名空间,在模板就可以直接使用该空间下的类型-->
// <add namespace="System.Text" />
// </namespaces>
// </pages>
// </system.web.webPages.razor>
//在配置文件中引用命名空间后,视图模板中没有自动完成功能, VS在编译时也不会检查该类型是否存在
//如果类型不存在或输入错误,只有在运行时才会报错,
StringBuilder sb = new StringBuilder(); //在视图模板中直接使用完整的类型,不需要在配置文件中设置
//VS虽然有自动完成功能,但同样在编译时也不会对类型时行检查
//同样只有在运行时才会报错
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("1,");
sb.Append("2,"); }
@d<br />
@sb.ToString()
意想不到的运行时错误(不应该是编译不通过吗?)
![ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚 ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODJPVGt5T1M4eU1ERTFNVEV2TmprNU1qa3RNakF4TlRFeE1EWXhOakExTVRFME56Y3RNVEkyT0RVNE5UazBNUzV3Ym1jPS5qcGc%3D.jpg?w=700&webp=1)