使用HTML.DisplayFor返回方法的值

时间:2014-09-29 15:43:14

标签: c# asp.net-mvc visual-studio asp.net-mvc-4

Visual Studio 2012 MVC4

您好,

我目前正在为员工开设以下课程,其中包含确定员工年龄的方法:

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.Web.Mvc.dll中发生了'System.InvalidOperationException'类型的异常,但未在用户代码中处理

其他信息:模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。

我不确定我是否不能使用HTML Display,或者我只是写错了。有什么想法吗?

由于

1 个答案:

答案 0 :(得分: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)

到这个

{{1}}