0

次のコードがあります。

    if (pick == null || pick == "active")
    {
       var Proj = db.usp_Train(idnbr)
                 .Where(a => a.Inactive == false).ToList();
     }        
     else 
     {
       var Proj = db.usp_Train(idnbr).ToList();

     }

return PartialView(Proj);

私がPartialView(Projs) を返した場所については、現在 Proj が存在しないというメッセージが表示されます。これを修正する方法についてのアイデアはありません。

4

5 に答える 5

3
if (pick == null || pick == "active")
{
    return PartialView(db.usp_Train(idnbr).Where(a => a.Inactive == false).ToList());
}
return PartialView(db.usp_Trainin(idnbr).ToList());

または、必要に応じて:

List<Project> projects;
if (pick == null || pick == "active")
{
    projects = db.usp_Train(idnbr).Where(a => a.Inactive == false).ToList();
}
else
{
    projects = db.usp_Trainin(idnbr).ToList();
}
return PartialView(projects);
于 2012-06-25T19:57:04.920 に答える
3

andブロックProjのスコープ内で宣言しているため、これらのブロックの外には存在しません。次のようなものが必要です。ifelse

// Or whatever the type is...
List<Train> proj;

if (pick == null || pick == "active")
{
    proj = db.usp_Train(idnbr)
             .Where(a => a.Inactive == false).ToList();
}        
else 
{
    proj = db.usp_Train(idnbr).ToList();
}
return PartialView(proj);

または、条件演算子を使用できます。

bool pickActive = pick == null || pick == "active";
var proj = pickActive ? db.usp_Train(idnbr).Where(a => !a.Inactive).ToList()
                      : db.usp_Train(idnbr).ToList();
return PartialView(proj);

または、すべての冗長性を削除する条件を選択的に適用します。

IQueryable<Train> proj = db.usp_Train(idnbr);
if (pick == null || pick == "active")
{
    proj = proj.Where(a => !a.Inactive);
}
return PartialView(proj.ToList());
于 2012-06-25T19:57:32.790 に答える
0

範囲Projが狭すぎます。

//define Proj here!
List<Train> Proj = null;

if (pick == null || pick == "active")
    {
       Proj = db.usp_Train(idnbr)
                 .Where(a => a.Inactive == false).ToList();
     }        
     else 
     {
       Proj = db.usp_Train(idnbr).ToList();

     }

return PartialView(Proj);
于 2012-06-25T19:57:17.760 に答える
0

Proj変数がアクセスされる場所にかかわらず、変数がスコープ内にあることを確認する必要があります。変数は宣言された場所に割り当てる必要があるためvar、宣言の繰り返しを避けるためにロジックをリファクタリングすることをお勧めします。

var proj = db.usp_Train(idnbr);

if (pick == null || pick == "active")
    proj = proj.Where(a => a.Inactive == false);

return PartialView(proj.ToList());    
于 2012-06-25T19:57:32.987 に答える
0

プロジェクトは範囲が限定されています。次のように宣言します。

    (whatever type Proj is) Proj;

    if (pick == null || pick == "active") 
        { 
            Proj = db.usp_Train(idnbr) 
                     .Where(a => a.Inactive == false).ToList(); 
         }         
         else  
         { 
            Proj = db.usp_Trainin(idnbr).ToList(); 

         } 


return PartialView(Proj); 
于 2012-06-25T19:57:48.667 に答える