Как получить ЗНАЧЕНИЕ свойства объекта, которое передается в мой пользовательский EditorFor из представления?
System.Web.Mvc имеет HtmlHelper, который содержит метод EditorFor, который отображает элемент управления редактирования, связанный с типом данных в представлении.
Я пытаюсь создать свой собственный метод EditorFor, расширяя ASP.NET MVC 2 HtmlHelper. У меня есть следующее:
public static string EditorForNew<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> item)
{
string value = "";
string name = item.ToString(); // THIS IS CORRECTED IN MY COMMENT TO THE ANSWER BELOW!
Type type = typeof(TProperty);
if (type == typeof(int) || type == typeof(int?) || type == typeof(double) || type == typeof(double?) || type == typeof(decimal) || type == typeof(decimal?) || type == typeof(float) || type == typeof(float?))
{
return helper.TextBox(name, value, new { @class = "number" }).ToString();
}
else
{
return helper.TextBox(name, value).ToString();
}
}
Кто-нибудь может объяснить, как я получаю ЗНАЧЕНИЕ свойства объекта, которое передается этому из представления?
1 ответ
Решение
Вам необходимо использовать ModelMetadata:
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(item, helper.ViewData);
Затем вы можете получить значение из metadata.Model
имущество.