asp.net mvc 2.0升级到asp.net mvc 4.0(迁移成功)

广告:

先新建一个空的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"); %>

广告:

相关内容

编辑:Admin 时间:2021/12/9 18:52:32 阅览:237   返回    
asp.net mvc 4.0
扫描关注53BK报刊官网
扫描关注阅速公司微信