首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >除非使用强制转换,否则找不到MVC HtmlHelper扩展方法

除非使用强制转换,否则找不到MVC HtmlHelper扩展方法
EN

Stack Overflow用户
提问于 2018-07-06 04:21:55
回答 1查看 871关注 0票数 1

我定义了一个名为BootstrapDropDownFor的扩展方法,它的定义是

代码语言:javascript
复制
public static IHtmlString BootstrapDropDownFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, dynamic options, string defaultOption)

当尝试在.cshtml文件中使用它时

代码语言:javascript
复制
@Html.BootstrapDropDownFor(m => m.RequestType, ViewBag.RequestTypes, "-- Select --")

我得到以下错误:

代码语言:javascript
复制
'HtmlHelper<WebPermissionModel>' does not contain a definition for 'BootstrapDropDownFor' and the best extension method overload 'HtmlHelpers.BootstrapDropDownFor<TModel, TValue>(HtmlHelper<TModel>, Expression<Func<TModel, TValue>>, dynamic, string, string)' requires a receiver of type 'HtmlHelper<TModel>'

但是,通过向options参数添加强制转换,我可以消除错误,如下所示。

代码语言:javascript
复制
@Html.BootstrapDropDownFor(m => m.RequestType, (object) ViewBag.RequestTypes, "-- Select --")

为什么添加强制转换可以解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-06 04:35:52

扩展中不支持动态,请检查以下内容:

Extension methods cannot be dynamically dispatched

Extension method and dynamic object

What causes "extension methods cannot be dynamically dispatched" here?

必须先显式转换动态类型,然后才能将其传递给方法

将动态参数更改为object或exact类型:IEnumerable<SelectListItem>

public static IHtmlString BootstrapDropDownFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, IEnumerable<SelectListItem> options, string defaultOption = "-- select --")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51199295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档