广告:
先新建一个空的asp.net mvc 4.0web应用程序,然后备份老项目web.config。复制新的web.config到旧的项目。另外把旧的应用程序项目生成目标改为 asp.net 4.0
1 view里面config变化更新
page字节:
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
2 根目录下面web.config变化更新
添加: appSettings、 connectionStrings
添加: namespaces
<add namespace="System.Collections.Generic"/>
<add namespace="System.Data"/>
<add namespace="FeiShareLibrary"/>
添加:httpModules
添加:globalization
改动:pages
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"> 改成下面 <pages>
不然提示找不到 System.Web.Mvc
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.Mvc.4.0.20710.0\lib\net40\System.Web.Mvc.dll
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Mvc.dll
常见错误:
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误消息: CS0234: 命名空间“System.Web”中不存在类型或命名空间名称“Mvc”(是否缺少程序集引用?)
源错误:
行 31: <namespaces>
行 32: <!--<add namespace="System.Web.Helpers" />-->
行 33: <add namespace="System.Web.Mvc" />
行 34: <add namespace="System.Web.Mvc.Ajax" />
行 35: <add namespace="System.Web.Mvc.Html" />
源文件: e:\aspnet2.0\53BK公司网站-net-家里\Mvcb2b\Web.config 行: 33
解决办法:引用时复制到本地
ViewEngines.Engines.Add(engine);
用户代码未处理 System.ArrayTypeMismatchException
HResult=-2146233085
Message=尝试访问类型与数组不兼容的元素。
Source=mscorlib
StackTrace:
在 System.Collections.Generic.List`1.Insert(Int32 index, T item)
在 System.Collections.ObjectModel.Collection`1.InsertItem(Int32 index, T item)
在 System.Web.Mvc.ViewEngineCollection.InsertItem(Int32 index, IViewEngine item)
在 System.Collections.ObjectModel.Collection`1.Add(T item)
在 Mvcb2b.MvcApplication.Application_Start() 位置 E:\aspnet2.0\53BK公司网站-net-家里\Mvcb2b\Global.asax.cs:行号 247
InnerException:
解决办法,把asp.net mvc相关的类库目标改为 asp.net 4.0
3 asp.net mvc4.0 控件中参数缓存变化
左边控件
[OutputCache(Duration = 2000, VaryByParam = "none",VaryByCustom = "Crawler")]
改为 [OutputCache(Duration = 2000, VaryByParam = "id;nowname",VaryByCustom = "Crawler")]
如: [OutputCache(Duration = 9526, VaryByParam = "classid;parentid;urlname;nowname", VaryByCustom = "Crawler")]
public ActionResult Productleft(string classid,string parentid,string urlname,string nowname)
引用:<%--左边内容--%>
<%Html.RenderAction("Productleft", "Userinc", new { classid = Model.Id, parentid = Model.Parentid, urlname = ViewData["urlname"], nowname = Model.Classname }); %>
顶部控件:
[OutputCache(Duration = 19526, VaryByParam = "*", VaryByCustom = "Crawler")]
/* 调用了 Reqeust.Url 所以需要用* */
public ActionResult Top(string ishome)
引用: <%-- 顶部--%>
<%Html.RenderAction("Top", "Userinc"); %>
广告: