Zaimplementowałem rozszerzenie MVC do formatowania liczb w mojej aplikacji. Jest oparty na kodzie znalezionym pod numerem here. I przedstawia się następującoExpressionHelper.GetExpressionText (wyrażenie) nie zwraca nazwy mojej usługi
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);
}
Kiedy nazywają go z poniższej linii składni Razor
@Html.DecimalBoxFor(model => Model.PointAttributes[i].Data.Y,"0.000", new { @class = "span1 number" })
uzyskać wyjątek, ponieważ zmienna „name” w moim rozszerzenia jest pusty łańcuch. Próbowałem zmienić linię nazwy var do tego, ale to tylko daje mi nazwę właściwości "Y", a nie pełne "Model.PointAttributes [i] .Data.Y", które muszę związać model z powrotem dla MVC.
var name = ((expression.Body is MemberExpression ?((MemberExpression)expression.Body).Member : ((MemberExpression)((UnaryExpression)expression.Body).Operand).Member)).Name;
Dzięki @AarolamaBluenk, wezmę udział biorąc pod uwagę Twoją sugestię i ostatecznie się poprawię. Dzięki jeszcze raz. –
Wpadliśmy na to i to działało idealnie dla nas. Dziękuję Ci! –