You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

View A传递Calculation对象至View B后无法访问hrs参数报错求助

嘿,我来帮你搞定这个头疼的问题!你碰到的“object does not contain a definition for 'hrs'”错误,基本逃不出下面这几个原因,咱们一步步排查修复:

问题根源及解决方案

1. 先检查你的Calculation类成员权限

大概率是你Calculation类里的hrs、cse这些字段/属性的访问修饰符不对——如果是private的话,外部的Results页面根本没权限访问它们。

赶紧把这些成员改成public,用属性的写法更规范(当然公共字段也能凑活,但属性是.NET的最佳实践):

public class Calculation
{
    public string hrs { get; set; }
    public string cse { get; set; }
    public string aqe { get; set; }
}

2. Results页面(View B)接收参数的姿势不对

你在View A里把calc对象传给了Results,但如果Results页面没正确接收、或者把它当成了object类型存储,就会出现找不到属性的错误。

给Results页面加个专门的构造函数,接收Calculation类型的参数,并且存成类的成员变量:

public partial class Results : ContentPage
{
    private Calculation _userCalculation;

    // 构造函数直接接收Calculation对象
    public Results(Calculation calc)
    {
        InitializeComponent();
        _userCalculation = calc;
        
        // 现在就能正常访问hrs属性给Label赋值了
        YourResultLabel.Text = _userCalculation.hrs;
    }
}

3. 确认View A的跳转代码没写错

你提供的跳转代码有点截断,要确保是把创建好的page对象传给PushModalAsync,别漏了:

async void Calculate_btn(object sender, EventArgs e) 
{ 
    Calculation calc = new Calculation() { hrs = "qwe", cse = "rty", aqe = "uio" }; 
    var page = new Results(calc); 
    await Navigation.PushModalAsync(page); // 这里一定要传入page对象!
}

最后再补两个检查点

  • 别忘了确认Results页面的命名空间和Calculation类的命名空间一致,或者已经引用了Calculation所在的命名空间,不然会出现类型找不到的问题。
  • 如果是用数据绑定来显示Label内容,记得把页面的BindingContext设为_userCalculation,比如在构造函数里加BindingContext = _userCalculation;,然后Label的Text绑定到hrs就行。

内容的提问来源于stack exchange,提问作者Jeppe Christensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:53:40