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

问题描述:

我正在努力生成TagHelper类中的HTML表格行,以将其添加到在隐藏子行中显示几个按钮的DataTables表中(点击给定行)。对于其中一个按钮,我需要来自不同类中属性的值(对应于单独数据库表中的值)。我不知道如何去引用其他课程,以便它对于给定的调查具有正确的价值。类布局是这样的:从TagHelper类通过ASP.NET MVC中的参数化构造函数访问其他类的属性

相关片段,我在工作:

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 

} 

Report类:

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类中报告类,让我可以访问与特定调查对应的Id。我最初的想法是一个paremeterized构造函数,但我不知道如何去实现,在这种情况下。我更像是一名PHP开发人员,所以我不太了解ASP.NET如何在ASP.NET设置中工作。

+0

“访问与特定调查相对应的Id” - 因此“Survey”类本身具有它自己的Id ,这个Id和Report类的ID一样吗? – Quantic

+0

'Survey'和'Report'之间的关系是什么?向我们展示更多你的'TagHelper'片段 - 那是在一个方法,构造函数中,在哪里?可能还会向我们展示您的“Survey”课程。 – Jasen

您需要从SurveyReport的链接。没有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()); 
}