2014-09-29 2 views
1

Visual Studio 2012 MVC4Использование Html.DisplayFor, чтобы вернуть значение метода

Привет,

Сейчас я работаю на следующий класс для сотрудника, который содержит метод для определения возраста работника:

public class Employee 
{ 
    public string firstName { get; set; } 
    public string lastName { get; set; } 
    public string empID { get; set; } 
    public bool isManager { get; set; } 
    public string empTel { get; set; } 
    public string empEml { get; set; } 
    public string empDOB { get; set; } 
    public string empBio { get; set; } 


    public int empAge() 
    { 
     DateTime birthdate = DateTime.Parse(empDOB); 

     int age = DateTime.Now.Year - birthdate.Year; 
     if (DateTime.Now.DayOfYear < birthdate.DayOfYear) 
     { 
      age = age - 1; 
     } 

     return age; 
    } 


    public string empMarketLocation { get; set; } 
    public double WeeklyHours { get; set; } 


    public Employee() 
    { 

    } 


} 




} 

первоначально я думал, что я смог бы отобразить результат этого метода, на мой взгляд лозы следующую строку:

@Html.DisplayFor(ModelItem => Model.empAge()) 

Однако, я получаю следующее сообщение об ошибке:

Исключение типа «System.InvalidOperationException» произошло в System.Web.Mvc.dll, но не был обработан в пользовательском коде

Дополнительная информация: Шаблоны могут быть используется только с доступом к полю, доступом к ресурсам, индексом одномерного массива или однопараметрическими выражениями пользовательского индексатора.

Я не уверен, что я не могу использовать HTML-дисплей или если я просто написал это неправильно. Есть предположения?

Благодаря

+2

, что о создании 'empAge' свойство – Jonesopolis

ответ

2

Вы можете использовать empAge с Html.DisplayFor вспомогательным методом, если это свойство вместо метода. Изменение empAge свойству

public int empAge 
{ 
    get 
    { 
     DateTime birthdate = DateTime.Parse(empDOB); 

     int age = DateTime.Now.Year - birthdate.Year; 
     if (DateTime.Now.DayOfYear < birthdate.DayOfYear) 
     { 
      age = age - 1; 
     } 

     return age; 
    } 
} 

и изменить

@Html.DisplayFor(ModelItem => Model.empAge()) 

к этому

@Html.DisplayFor(m => m.empAge) 
+0

не писать бизнес-логику в поле зрения @ekad прав сделать недвижимость в поле зрения модель –

Смежные вопросы