dhl: asp.net mvc 往上高版本移植的方法(芝麻开门项目成功移植)
2009-04-09 15:17
363 查看
我在机子上装了mvc的正式版了,可原来的项目是mvc preview5开发的,项目移植到1.0后,出现以下:
编译器错误消息: CS0411: 无法从用法中推理出方法“Microsoft.Web.Mvc.LinkExtensions.ActionLink<T>(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression<System.Action<T>>, string)”的类型参数。请尝试显式指定类型参数。
源错误:
源文件: f:\Publish\OpenDoor\Views\Admin\ManagePrizeShow.aspx 行: 4
原理分析: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;
2009-11-19更新补充:
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。编译器错误消息: 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> [code] [/code] |
原理分析: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;
2009-11-19更新补充:
如果原来p5中存在方法:Html.RenderAction("PrizeList", "OpenDoor"); //奖品动态 [code] 由于在mvc1.0后不存在RenderAction()方法,只存在RenderPartial()方法。 当然,建议改成:Html.RenderPartial("_PrizeList");方法。(请参选:http://eduncan911.com/blog/type-safety-with-asp-net-mvc-futures.aspx) 但是这样,还的改好多代码,Controller就不能要,只能通过MOdel传递 如果还想用RenderAction()方法,请引用Microsoft.Web.Mvc.dll 加上:<%@ Import Namespace="Microsoft.Web.Mvc"%> 因为方法在这个dll中。注意上传服务器后也把Microsoft.Web.Mvc。dll一起上传。 下载地址;http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471 可参考:Asp.Net MVC中的RenderPartial 和 RenderAction 编译时: 错误 25 “System.Web.Mvc.UrlHelper”不包含“ViewContext”的定义,并且找不到可接受类型为“System.Web.Mvc.UrlHelper”的第一个参数的扩展方法“ViewContext”(是否缺少 using 指令或程序集引用?) F:\OpenTheDoor\OpenTheDoor\MlgUrlHelper.cs 35 128 OpenTheDoor.web 方案:将自己定义的ViewPage 和Url 删除。 [/code] |
相关文章推荐
- ASP.NET MVC 此安装不支持该项目类型解决方法(转)
- ASP.NET MVC 此安装不支持该项目类型解决方法
- ASP.NET MVC 3.0 视图在类库项目中无法智能提示解决方法
- dhl:asp.net mvc下用jQuery ajax方法实现无刷新分页(用户控件)& 整体页面无刷新(2010-11-13 add)
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- ASP.NET MVC 此安装不支持该项目类型解决方法
- ASP.NET MVC 此安装不支持该项目类型解决方法
- Asp.net MVC WebApi项目的自动接口文档及测试功能打开方法
- 【MVC】ASP.Net MVC 4项目升级MVC 5的方法
- dhl: 在 ASP.NET MVC 中创建自定义 HtmlHelper 使用扩展方法创建 HTML Helper
- 使用Ajax更新ASP.Net MVC项目中的报表对象方法
- VS2017中建立ASP.NET MVC 4.0项目
- ASP.NET MVC测试方法与技巧
- 关于ASP.NET MVC中Response.Redirect和RedirectToAction的BUG (跳转后继续执行后面代码而不结束进程)以及处理方法
- ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
- asp.net mvc 3.0详细笔记__06__项目文件结构详解_Content和Scripts
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.Net MVC 框架下项目中个目录作用
- 【转】在 ASP.NET MVC 项目中使用 WebForm
- Orchard 发布1.0版本和ASP.NET MVC 3 RTM