mvc 4模型,方法总是返回0?

时间:2013-08-23 17:21:38

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

嗨我的模型中有一个名为BMI的属性,它基本上是一些逻辑,它返回一个从一个名为CalculateBMI的方法计算的数字,但是这总是返回0,即使我在方法的返回上放了一个断点重量和高度包含数字,但_bmi永远不会分配任何东西

BMI属性:

 private int _bmi;
        [DisplayName("BMI")]
        public int BMI 
        {
            get {return _bmi;}
            set 
            { 
                _bmi = value;
                _bmi = CalculateBMI();

            } 
        }

CalculateBMI方法:

  public int CalculateBMI()
        {

            _bmi = Weight / (Height * Height);
            return _bmi; 
        }

3 个答案:

答案 0 :(得分:2)

所以我相信我们在评论中所说的就是你需要的是:

public double BMI { get { return Weight / (Height * Height); } }

@ataravati对于DisplayName属性是不正确的,因为它与属性名称相同。

您还应该将类型更改为double,因为结果应该是浮点值。我还要确保您的WeightHeight属性也是double,因此您不会从整数除法中得到零。

答案 1 :(得分:1)

不看你的代码,其他回复中指出了一些问题,你需要检查你的价值。

导致分裂的零可以来自:

  • Weight = 0
  • 由于BMI变量的类型为int
  • ,因此除法结果四舍五入为0

所以...尝试调试并使用实际值进行数学计算。如果结果小于0.5,则最有可能舍入为0。

您可以将BMI类型更改为DecimalDouble以尝试。

答案 2 :(得分:0)

你的财产应该是这样的,因为你不想把它设置成任何东西。它是在运行中计算的,您只需要对它进行只读访问:

public int BMI 
{
    get 
    { 
        return CalculateBMI();
    }
}

顺便说一句,当显示名称与属性名称相同时,您不需要DisplayName属性。