dhl: asp.net mvc 往上高版本移植的方法(芝麻开门项目成功移植)

我在机子上装了mvc的正式版了,可原来的项目是mvc preview5开发的,项目移植到1.0后,出现以下:

编译错误

说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误消息: CS0411: 无法从用法中推理出方法“Microsoft.Web.Mvc.LinkExtensions.ActionLink<T>(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression<System.Action<T>>, string)”的类型参数。请尝试显式指定类型参数。

源错误:

行 2: <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 行 3: 行 4: <div><font color="blue">【<%=Html.ActionLink("全部列表", "ManagePrizeShow")%>】【<%=Html.ActionLink("金苹果列表", "ManagePrizeShow", new { ptype=10 })%>】【<%=Html.ActionLink("只显示充值卡列表", "ManagePrizeShowCard")%>】</font></div> 行 5: <div style="color:red"><%=TempData["message"] %></div> 行 6: <table>


源文件: f:\Publish\OpenDoor\Views\Admin\ManagePrizeShow.aspx    行:

 

原理分析:ASP.NET web应用程序在运行的时候,首先引用的dll文件是否存在于GAC(windows/assembly文件夹)(C:\WINDOWS\assembly\GAC_MSIL\System.Web.Mvc\1.0.0.0__31bf3856ad364e35)
,然后检查程序文件的bin文件夹。所以尽管我的应用程序引用的dll文件是指定文件夹位置(非GAC或bin),仍然会引起错误,因为运行时它调用的是GAC下的system.web.mvc.dll文件。 
      
这个方法好使,但是不可行,因为asp.net mvc 版本总是在升级的,我不能不升级啊。

asp.net mvc 往上高版本移植的通用方法---

1)第一步: 关闭vs,卸载原先安装的mvc版本 mvc preview 5

2)  第二步: 下载安装mvc 正式版.

3)第三步: 修改ucenter.web的web.config文件配置,更新mvc程序集引用。

    为:

<add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

 <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

 <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
4)第四步:在web.config中配置添加页面的命名空间System.Web.Mvc.Html

<add namespace="System.Web.Mvc.Html"/> (不同的服务器可能环境不同,可以不加。)

 

如果还是报:System.Web.Mvc.HtmlHelper不包含ActionLink的定义并且最佳扩展方法重载...

这样解决: 在出错的.cs文件上加上: using System.Web.Mvc.Html;

因为1.0之前HtmlHelper是在.mvc下的,1.0就改在.mvc.html下. 还加了:System.Web.Mvc.Ajax;

 

posted @ 2009-04-09 15:17  肚肚  阅读(571)  评论(0编辑  收藏  举报