通过ASP.NET MVC中的paremeterized构造函数访问其他类的属性

时间:2016-09-26 21:15:37

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

我正在TagHelper类中生成HTML Table Rows,以添加到DataTables表中,该表在隐藏子行中显示几个按钮(单击给定行时显示)。对于其中一个按钮,我需要来自不同类中的属性的值(对应于单独的数据库表中的值)。我不确定如何引用其他类,以便它具有给定调查的正确值。类布局是这样的:

我正在使用的TagHelper类中的相关代码段:

public IEnumerable<Survey> listSurv { get; set; }

foreach(Survey surv in listSurv) {
    //Row Construction Happening Before the Button

    //I need to reference the Report class here to get the ReportID (Id in the Report class).
    //Currently, I have this, but it always returns 0
    Report r = new Report();
    innerData.InnerHtml.Append(r.Id.ToString()); //innerData is a TagBuilder element that's previously constructed

}

报告类:

public class Report()
{
    public int Id {get; set;}
    public virtual Survey Survey {get; set;}
    public string DLLink {get; set;}
    public DateTime Date_Uploaded {get; set;}
}

我是否可以通过某种方式在TagHelper类中实例化Report类,以便我可以访问与该特定调查相对应的Id?我最初的想法是一个paremeterized构造函数,但我不知道如何在这种特殊情况下实现它。我更像是一个PHP开发人员,所以我不太熟悉它在ASP.NET设置中的工作方式。

1 个答案:

答案 0 :(得分:0)

您需要从Survey返回Report的链接。没有Survey代码,那个很难说清楚。您可以做的是将报告保存为调查中的参考,并从您的代码中调用该报告。 你现在所做的是创建一个新的Report,这样的默认id始终为零。

因此,在调查中创建报告参考:

public class Survey {
    public Report Report { get; set; }
}

将调查实例与对报告实例的引用相关联:

var report = GetReport();
var survey = GetSurvey();
survey.Report = report;

现在,您可以从报告属性中检索报告数据:

foreach(Survey survey in listSurv) {
    innerData.InnerHtml.Append(survey.Report.Id.ToString());
}