Czy ktoś mógłby mi coś wyjaśnić. W mojej aplikacji ASP.NET MVC 2, mam klasę BaseViewModel
który obejmuje następujące metody:Argumentów typu nie można wywnioskować z użycia. Spróbuj jednoznacznie podać argumenty typu.
public virtual IDictionary<string, object> GetHtmlAttributes<TModel, TProperty>
(Expression<Func<TModel, TProperty>> propertyExpression)
{
return new Dictionary<string, object>();
}
Pomysł jest, że każdy ViewModel dziecko może zastąpić tę metodę i zapewnić odpowiedni zestaw atrybutów HTML, w oparciu na jakiejś logiki, które mają być świadczone w widoku:
<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
(model => model.MyProperty)) %>
jednak kiedy jest stosowany jako w wierszu powyżej, otrzymuję błąd kompilacji, kiedy uderzyć widok:
argumentów typu za spełnione hod '
...BaseViewModel.GetHtmlAttributes<TModel,TProperty> Expression<System.Func<TModel,TProperty>)
' nie można wywnioskować z użycia. Spróbuj jawnie określić argumenty typu.
muszę wykonać następujące czynności:
<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
<ChildModel, string>(model => model.MyProperty)) %>
prostu szukam jakiegoś jasności, jak to próbuje ustalić typ, to nie ma problemu robi tak w metodzie HtmlHelper/TextBoxFor
rozszerzenia?
Czy dlatego HtmlHelper
w widoku zostanie automatycznie dla tego samego typu, jak określono w ViewUserControl
na górze strony, podczas gdy mój kod może być dla każdego typu dziedziczy z BaseViewModel
? Czy możliwe jest napisanie tego w taki sposób, aby można było wnioskować o moim typie modelu/właściwości?
Holy poziomy paski przewijania batman! –
Tak, całkowicie. To absurd na naszych 30-calowych monitorach, że dostajemy zaledwie 6,5 "do przewijania kodu w tych małych okienkach. Przyjdźcie, chłopaki z SA, zabierzcie pieniądze z VC i zyskajcie dynamiczny rozmiar strony! – Slaggg