【问题标题】:Using HTML.DisplayFor to return the value of a method使用 HTML.DisplayFor 返回方法的值
【发布时间】:2014-09-29 23:49:58
【问题描述】:

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 显示还是我写错了。有什么想法吗?

谢谢

【问题讨论】:

  • 如何将empAge 设为属性

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


【解决方案1】:

如果empAge 是属性而不是方法,则可以将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)

【讨论】:

  • 不要在视图中编写业务逻辑@ekad 是正确的在视图模型中制作属性
猜你喜欢
  • 2018-02-16
  • 2014-04-12
  • 2015-01-20
  • 2023-03-09
  • 1970-01-01
  • 2021-12-14
  • 2020-06-10
  • 2013-04-24
  • 1970-01-01
相关资源
最近更新 更多