相关疑难解决方法(0)

无法从用法推断出类型参数.尝试显式指定类型参数

有人可以请我澄清一些事情.在我的ASP.NET MVC 2应用程序中,我有一个BaseViewModel包含以下方法的类:

public virtual IDictionary<string, object> GetHtmlAttributes<TModel, TProperty>
                        (Expression<Func<TModel, TProperty>> propertyExpression)
{
    return new Dictionary<string, object>();
}
Run Code Online (Sandbox Code Playgroud)

我们的想法是每个子视图模型都可以覆盖此方法,并根据某些逻辑提供一组合适的html属性,以便在视图中呈现:

<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
                                                 (model => model.MyProperty)) %>
Run Code Online (Sandbox Code Playgroud)

但是当在上面的行中使用时,当我点击视图时出现编译错误:

方法' ...BaseViewModel.GetHtmlAttributes<TModel,TProperty> Expression<System.Func<TModel,TProperty>)' 的类型参数不能从用法中推断出来.尝试显式指定类型参数.

我必须做以下事情:

<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
                             <ChildModel, string>(model => model.MyProperty)) %>
Run Code Online (Sandbox Code Playgroud)

我只是在寻找一些关于它如何尝试推断类型的清晰度,在HtmlHelper/TextBoxFor扩展方法中这样做是没有问题的?

是因为HtmlHelper在视图中将自动ViewUserControl与页面顶部指定的类型相同,而我的代码可以用于继承的任何类型BaseViewModel?有可能以这样的方式编写它,它可以推断我的模型/属性类型?

c# linq generics expression asp.net-mvc-2

36
推荐指数
3
解决办法
9万
查看次数

标签 统计

asp.net-mvc-2 ×1

c# ×1

expression ×1

generics ×1

linq ×1