首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mvc 4模型,方法总是返回0?

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

Stack Overflow用户
提问于 2013-08-24 01:21:38
回答 3查看 232关注 0票数 0

您好,我的模型中有一个名为BMI的属性,它基本上是一些逻辑,它返回一个名为CalculateBMI的方法计算出的数字,但它总是返回0,即使我在方法的返回值上设置了断点,体重和身高包含数字,但_bmi从未被赋值

BMI属性:

代码语言:javascript
运行
复制
 private int _bmi;
        [DisplayName("BMI")]
        public int BMI 
        {
            get {return _bmi;}
            set 
            { 
                _bmi = value;
                _bmi = CalculateBMI();

            } 
        }

CalculateBMI方法:

代码语言:javascript
运行
复制
  public int CalculateBMI()
        {

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

回答 3

Stack Overflow用户

发布于 2013-08-24 01:35:15

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

代码语言:javascript
运行
复制
public double BMI { get { return Weight / (Height * Height); } }

@ataravati还正确地认为DisplayName属性是不必要的,因为它与属性名称相同。

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

票数 2
EN

Stack Overflow用户

发布于 2013-08-24 02:48:25

不要看你的代码,它在其他响应中指出了一些问题,你需要检查你的值。

导致除法的零可能来自:

由于

  • Weight变量的类型为int

,因此将除法结果四舍五入为0

  • BMI =0

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

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

票数 1
EN

Stack Overflow用户

发布于 2013-08-24 01:35:55

您的属性应该是这样的,因为您不想将其设置为任何值。它是动态计算的,您只需要对其进行只读访问:

代码语言:javascript
运行
复制
public int BMI 
{
    get 
    { 
        return CalculateBMI();
    }
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18408427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档