0

Ilistに問題があり、ループできません。常にエラーがスローされます。オブジェクト参照がオブジェクトのインスタンスに設定されていません。これが私のビューです。コードをデバッグすると、モデルに値がありますが、 foreachには、item.pillarofcultureteamlevelが設定されていないと表示されます。ヘルプ

@model P247.Pres.MVC.ViewModel.SummaryTeamLevelViewModel
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<html>
<head>
         <title></title>
</head>
<body>
<h2>Index</h2>
@{
var item = Model;

foreach (var pillar in item.pillarofcultureteamlevel)
{
    var js = pillar.JobSecurityAndOverallCompensation;
}
}
</body>
</html>

これが私のコントローラーです

public ActionResult Index()
    {
        _reportservice = new ReportService();
        _pillarofcultureteamlevel  = _reportservice.GetPillarsOfCultureTeamLevel(57);
        _retentiondriverteamlevel = _reportservice.GetRentionDriversTeamLevel(57);
        _employeeteamlevelsummarylist = _reportservice.GetEmployeeTeamLevelSummaryDTO(57);
        summary = new SummaryTeamLevelViewModel(_pillarofcultureteamlevel, _retentiondriverteamlevel, _employeeteamlevelsummarylist);
        return View(summary);
    }

これが私のビューモデルです

public class SummaryTeamLevelViewModel
{

    private IList<PillarsOfCultureTeamLevelDTO> _pillarofcultureteamlevel;
    private IList<RetentionDriverTeamLevelDTO> _retentiondriverteamlevel;
    private IList<EmployeeTeamLevelSummaryDTO> _employeeteamlevelsummarylist;

    public SummaryTeamLevelViewModel(IList<PillarsOfCultureTeamLevelDTO> pillarofcultureteamlevel,
                                    IList<RetentionDriverTeamLevelDTO> retentiondriverteamlevel,
                                    IList<EmployeeTeamLevelSummaryDTO> employeeteamlevelsummarylist)
    {
        _pillarofcultureteamlevel = pillarofcultureteamlevel;
        _retentiondriverteamlevel = retentiondriverteamlevel;
        _employeeteamlevelsummarylist = employeeteamlevelsummarylist;
    }

    public IList<PillarsOfCultureTeamLevelDTO> pillarofcultureteamlevel { get; set; }

    public IList<RetentionDriverTeamLevelDTO> retentiondriverteamlevel { get; set; }

    public IList<EmployeeTeamLevelSummaryDTO> employeeteamlevelsummarylist { get; set; }

}
4

1 に答える 1

1

あなたの問題はあなたのSummaryTeamLevelViewModelクラスにあります。データを格納するためのプライベート フィールドがあり、コントローラーで行うようにコンストラクターを呼び出した後、そこに値が格納されます。get; set;ただし、プライベート フィールドを明示的に使用する代わりに構文を使用するため、プロパティはプライベート フィールドを返したり設定したりしません。

問題を解決するには 2 つの方法があります。

次のようにプライベート フィールドを使用するようにプロパティを変更します。

public IList<PillarsOfCultureTeamLevelDTO> pillarofcultureteamlevel { get { return _pillarofcultureteamlevel; } set { _pillarofcultureteamlevel = value; } }

または、コンストラクターを変更してプライベート フィールドを削除し、プロパティのみを使用するようにすると、次のようになります。

public class SummaryTeamLevelViewModel
{
    public SummaryTeamLevelViewModel(IList<PillarsOfCultureTeamLevelDTO> pillarofcultureteamlevel,
                                    IList<RetentionDriverTeamLevelDTO> retentiondriverteamlevel,
                                    IList<EmployeeTeamLevelSummaryDTO> employeeteamlevelsummarylist)
    {
        this.pillarofcultureteamlevel = pillarofcultureteamlevel;
        this.retentiondriverteamlevel = retentiondriverteamlevel;
        this.employeeteamlevelsummarylist = employeeteamlevelsummarylist;
    }

    public IList<PillarsOfCultureTeamLevelDTO> pillarofcultureteamlevel { get; set; }

    public IList<RetentionDriverTeamLevelDTO> retentiondriverteamlevel { get; set; }

    public IList<EmployeeTeamLevelSummaryDTO> employeeteamlevelsummarylist { get; set; }

}
于 2013-01-31T06:13:10.973 に答える