2

クエリ文字列の値に基づいてビューモデルにデータを入力しようとしています。これが私のコントローラーです:

public ViewResult Index(int? ShiftStatusID)
{
    //Get logged in User
    User user = _accountService.GetUser(_formsAuthService.GetLoggedInUserID());

    if (ShiftStatusID == null) // Get all shifts
    {
        ViewModelShiftList viewModel = new ViewModelShiftList
        {
            Shifts = _shiftService.GetShifts(user.organisationID.Value).ToList()
        };
    }
    else // Get shifts by status id
    {
        ViewModelShiftList viewModel = new ViewModelShiftList
        {
            Shifts = _shiftService.GetShiftsByStatus(user.organisationID.Value, ShiftStatusID).ToList()  
        };
    }

    return View(viewModel);
}

そのため、「ビューモデルは現在のコンテキストに存在しません」と言って、ビューモデルをビューに戻すことはできません。ifステートメントの外でビューモデルを宣言することはできません。これはどのように行う必要がありますか?

4

2 に答える 2

1

viewresultのifステートメントから移動してみてください。正常に動作するはずのコード例を次に示します。

public ViewResult Index(int? ShiftStatusID)
{
       //Get logged in User
        User user = _accountService.GetUser(_formsAuthService.GetLoggedInUserID());
        var viewModel = new ViewModelShiftList();

        if (ShiftStatusID.HasValue)// Get shifts by status id
        {
            viewModel.Shifts = _shiftService.GetShifts(user.organisationID.Value).ToList();
        }
        else // Get all shifts
        {
            viewModel.Shifts = _shiftService.GetShiftsByStatus(user.organisationID.Value, ShiftStatusID).ToList();
        }

    return View(viewModel);

}
于 2012-06-12T02:53:45.897 に答える
0

コードをクリーンアップし、重複する行を削除します。

public ViewResult Index(int? ShiftStatusID)
{
    //Get logged in User
    User user = _accountService.GetUser(_formsAuthService.GetLoggedInUserID());

    List<Shift> shifts;

    if(ShiftStatusID == null)
        shifts = _shiftService.GetShifts(user.organisationID.Value).ToList();
    else
        shifts = _shiftService.GetShiftsByStatus(user.organisationID.Value, ShiftStatusID).ToList();

    var viewModel = new ViewModelShiftList
    {
        Shifts = shifts
    };

    return View(viewModel);
}
于 2012-06-12T03:01:56.013 に答える