【发布时间】:2011-02-11 13:05:30
【问题描述】:
有人可以为我澄清一些事情吗?在我的 ASP.NET MVC 2 应用程序中,我有一个 BaseViewModel 类,其中包括以下方法:
public virtual IDictionary<string, object> GetHtmlAttributes<TModel, TProperty>
(Expression<Func<TModel, TProperty>> propertyExpression)
{
return new Dictionary<string, object>();
}
想法是每个子视图模型都可以覆盖此方法并根据某些逻辑提供一组合适的 html 属性,以在视图中呈现:
<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
(model => model.MyProperty)) %>
但是,在上面一行中使用时,当我点击视图时出现编译错误:
方法“
...BaseViewModel.GetHtmlAttributes<TModel,TProperty> Expression<System.Func<TModel,TProperty>)”的类型参数无法从用法中推断出来。尝试明确指定类型参数。
我必须做到以下几点:
<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
<ChildModel, string>(model => model.MyProperty)) %>
我只是想弄清楚它如何尝试推断类型,在HtmlHelper/TextBoxFor 扩展方法中这样做没有问题吗?
是不是因为视图中的HtmlHelper 将自动与页面顶部ViewUserControl 中指定的类型相同,而我的代码可以用于从BaseViewModel 继承的任何类型?是否可以以可以推断我的模型/属性类型的方式编写此代码?
【问题讨论】:
-
神圣的水平滚动条蝙蝠侠!
-
是的。在我们的 30 英寸显示器上,我们只有 6.5 英寸的显示器用于在这些小窗口中来回滚动代码,这太荒谬了。来吧 SA 伙计们,拿走你的 VC 钱并获得动态页面大小!
标签: c# linq generics asp.net-mvc-2 expression