Tôi đã triển khai một phần mở rộng MVC để định dạng các số trong ứng dụng của mình. Nó dựa trên mã được tìm thấy here. Và như sauExpressionHelper.GetExpressionText (biểu thức) không trả về tên tài sản của tôi
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);
}
Khi tôi gọi nó với dòng sau của Razor cú pháp
@Html.DecimalBoxFor(model => Model.PointAttributes[i].Data.Y,"0.000", new { @class = "span1 number" })
tôi nhận được một ngoại lệ vì biến 'tên' trong phần mở rộng của tôi là một chuỗi rỗng. Tôi đã cố gắng thay đổi dòng var tên này nhưng nó chỉ mang lại cho tôi tên thuộc tính của 'Y' và không phải là đầy đủ 'Model.PointAttributes [i] .Data.Y' mà tôi cần phải ràng buộc mô hình trở lại cho MVC.
var name = ((expression.Body is MemberExpression ?((MemberExpression)expression.Body).Member : ((MemberExpression)((UnaryExpression)expression.Body).Operand).Member)).Name;
Cảm ơn @AarolamaBluenk, tôi sẽ thực hiện trong tài khoản đề xuất của bạn, và chắc chắn sẽ cải thiện bản thân mình. Cảm ơn một lần nữa. –
Chúng tôi chạy vào điều này và điều này làm việc hoàn hảo cho chúng tôi. Cảm ơn bạn! –