2014-09-29 25 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 2014-09-29 15:46:24

回答

2

您可以使用empAgeHtml.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是正确的在视图模型中创建财产 – 2014-09-29 15:55:46