razor在App_Code中使用ActionLink无效的解决方案

本文介绍了解决CS1928错误的方法,该错误出现在尝试使用ASP.NET MVC中的HtmlHelper ActionLink方法时。通过调整cshtml文件的继承方式并引入必要的命名空间,可以成功调用ActionLink。

症状

 CS1928: “System.Web.WebPages.Html.HtmlHelper”不包含“ActionLink”的定义,并且最佳扩展方法重载“System.Web.Mvc.Html.LinkExtensions.ActionLink(System.Web.Mvc.HtmlHelper, string, string, object)”的某些参数无效

英语版:

'System.Web.Mvc.HtmlHelper' does not contain a definition for 'ActionLink' and no extension method 'ActionLink' accepting a first argument of type 'System.Web.Mvc.HtmlHelper' could be found (are you missing a using directive or an assembly reference?)

无效解决方案

添加命名空间 System.Web.Mvc.Html

提供错误解决方案的连接(顺带鄙视)

http://topic.youkuaiyun.com/u/20090409/10/9b1060c3-5731-4bc5-a820-06be8a257f26.html

http://0839it.net/2011/0225/36219.html

原因分析

普通的cshtml文件继承自 System.Web.WebPages.HtmlHelper 而不是 System.Web.Mvc.HtmlHelper

This is because the compiled helpers derive from System.Web.WebPages.HelperPage, and though it exposes an Html property, its of type System.Web.WebPages.HtmlHelper rather thanSystem.Web.Mvc.HtmlHelper.

解决方案

将App_Code中的cshtml显式继承自以下的类

using System.Web.Mvc;
using System.Web.WebPages;
namespace Test
{
	public class HelperPage : System.Web.WebPages.HelperPage
	{
		// Workaround - exposes the MVC HtmlHelper instead of the normal helper
		public static new HtmlHelper Html
		{
			get { return ((System.Web.Mvc.WebViewPage)WebPageContext.Current.Page).Html; }
		}
	}
}

然后在cshtml文件中加入以下内容

@inherits Test.HelperPage
@using System.Web.Mvc.Html
@using System.Web.Mvc

Enjoy

参考资料

http://stackoverflow.com/questions/4710853/using-mvc-htmlhelper-extensions-from-razor-declarative-views

http://stackoverflow.com/questions/4451287/razor-declarative-html-helpers/4453637#4453637

http://stackoverflow.com/questions/4866462/having-razor-helper-in-app-code-folder-using-asp-net-mvc-3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值