我有LabelFor
的重载,可以像这样使用:
@Html.LabelFor(i => i.MyProperty)
如何让编译器使用我的重载而不是MVC ootb提供的重载?
基本上这只是为了让我可以通过* suffix
将所需的字段标签吐出来答案 0 :(得分:4)
对于那种超载,你不能(合理地)。
只需将方法命名为Label()
或MyLabelFor()
等。
答案 1 :(得分:1)
LabelFor
接受Expression<Func<TModel, TValue>>
参数。我想你可以做类似的事情:
public static string LabelFor<TModel, string>(
this HtmlHelper<TModel> htmLHelper,
Expression<Func<TModel, string>> expression) {
// etc
...让你的扩展方法超载特定,但这并不意味着应该,因为你需要为所有这样做属性类型。
不要让您的方法命名与标准HtmlHelper
扩展方法混淆,而是将其命名为不同,例如。
@Html.MyLabelFor(m => m.MyProperty);