自定义HtmlHelper与System.Web.Mvc版本具有相同的方法签名 - 不明确的调用

时间:2011-02-17 01:52:36

标签: asp.net asp.net-mvc-2 html-helper

我在MVC2源代码中找到了一个稍微定制的LabelFor()Html Helper版本。当我在一个视图中使用它时,我得到一个“模糊调用”错误 - 这是完全合理的,因为我也保留了原始的签名。

LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, 
                         Expression<Func<TModel, TValue>> expression)

有没有办法在视图中设置使用/导入别名?

编辑:不幸的是this表明这是不可能的。看起来像创建具有相同方法名称和签名works的扩展方法,但显然不是在aspx模板中。

1 个答案:

答案 0 :(得分:0)

您不能这样做,因为除了通过目标类型和分辨率中涉及的参数之外,没有影响扩展方法分辨率的机制。在这种情况下,你将不得不求助于搜索&amp;取代

另一种方法是定义您自己的页面基本类型,它覆盖Html属性以返回您自己的派生HtmlHelper,并将该扩展基于此。但这似乎更令人讨厌。