He implementado una Extensión MVC para formatear los números en mi aplicación. Se basa en el código encontrado here. Y es el siguienteExpressionHelper.GetExpressionText (expresión) no devuelve el nombre de mi propiedad
public static MvcHtmlString DecimalBoxFor<TModel>(this HtmlHelper<TModel> html, Expression<Func<TModel, double?>> expression, string format, object htmlAttributes = null)
{
var name = ExpressionHelper.GetExpressionText(expression);
double? dec = expression.Compile().Invoke(html.ViewData.Model);
var value = dec.HasValue ? (!string.IsNullOrEmpty(format) ? dec.Value.ToString(format) : dec.Value.ToString()): "";
return html.TextBox(name, value, htmlAttributes);
}
Cuando llamo con la siguiente línea de sintaxis Razor
@Html.DecimalBoxFor(model => Model.PointAttributes[i].Data.Y,"0.000", new { @class = "span1 number" })
consigo una excepción porque la variable 'name' en mi extensión es una cadena vacía. He intentado cambiar la línea del nombre var a esto, pero solo me da el nombre de propiedad de 'Y' y no el completo 'Model.PointAttributes [i] .Data.Y' que necesito vincular al modelo para MVC.
var name = ((expression.Body is MemberExpression ?((MemberExpression)expression.Body).Member : ((MemberExpression)((UnaryExpression)expression.Body).Operand).Member)).Name;
Gracias @AarolamaBluenk, tomaré en cuenta su sugerencia, y definitivamente me mejoraré. Gracias de nuevo. –
Nos encontramos con esto y esto funcionó perfectamente para nosotros. ¡Gracias! –