¿Podría alguien aclarar algo para mí? En mi aplicación ASP.NET MVC 2, tengo una clase BaseViewModel
que incluye el siguiente método:Los argumentos de tipo no se pueden deducir del uso. Intente especificar los argumentos de tipo explícitamente
public virtual IDictionary<string, object> GetHtmlAttributes<TModel, TProperty>
(Expression<Func<TModel, TProperty>> propertyExpression)
{
return new Dictionary<string, object>();
}
La idea es que cada modelo de vista niño puede reemplazar este método y proporcionar un conjunto adecuado de atributos HTML, basado en cierta lógica, que se representan en la vista:
<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
(model => model.MyProperty)) %>
Sin embargo, cuando se usa como en la línea de arriba, me sale un error de compilación cuando llegué a la vista:
los argumentos de tipo conocido para hod '
...BaseViewModel.GetHtmlAttributes<TModel,TProperty> Expression<System.Func<TModel,TProperty>)
' no se puede deducir del uso. Intente especificar los argumentos de tipo explícitamente.
tengo que hacer lo siguiente:
<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
<ChildModel, string>(model => model.MyProperty)) %>
sólo estoy buscando un poco de claridad en cuanto a la forma en que trata de inferir el tipo, se ha de hacer por lo que no hay problema en el método HtmlHelper/TextBoxFor
extensión?
¿Es porque HtmlHelper
en la vista serán automáticamente por el mismo tipo que se especifica en el ViewUserControl
en la parte superior de la página, mientras que el código puede ser de cualquier tipo que hereda de BaseViewModel
? ¿Es posible escribir esto de tal manera que pueda inferir mis modelos/tipos de propiedad?
Holy horizontal scrollbars batman! –
Sí totalmente. Es absurdo que en nuestros monitores de 30 "obtengamos solo 6.5" para desplazar el código hacia adelante y hacia atrás en estas pequeñas ventanas. ¡Vamos, muchachos, tomen su dinero de VC y obtengan el tamaño dinámico de la página! – Slaggg