2011-11-11 21 views
1

ViewModelを使用してビューにforloopを実装しようとすると問題が発生します。エラーCS0135: 'モデル'が 'System.Web.Mvc.ViewPage <TModel>。モデル'と競合します。

私はこの私の見解についてのViewModel

public class EventDashboard 
{ 
    public int Id {get;set;} 

    public string Name {get;set;} 
    public string Email {get;set;} 
    public string Phone {get;set;} 

    public ICollection<FighterDetails> FightersFees{ get; set; } 

    public void LoadFighterDetails(int eventId, int fighterId, aContext ac, bContext bc){ 

     Fighters fighter = ac 
      .Fighters 
      .Include(npo => npo.FighterAddress) 
      .FirstOrDefault(npo => npo.FighterId== fighterId); 

     this.Name = fighter.Name; 
        this.Email = fighter.Email; 
        this.Phone = fighter.Phone; 

     LoadFees(bc, fighterId); 
    } 

    public void LoadFees(bContext bc, int fighterId) 
    { 
       var fees = bc.Fees.Where(f => f.fighterId == fighterId); 
       FightersFees = new List<FighterDetails>(); 

       foreach(var f in fees){ 
        this.FightersFees.Add(new FighterDetails{ 
          //fill the properties 
         }); 
       } 
      } 
    } 

public class FighterDetails 
{ 
    public string FighterName { get; set; } 
    public int fighterId { get; set; } 
    public decimal FighterFee { get; set; } 
} 

あります

 <% foreach(var d in Model.Fighters){ %> 
     <%} %> 

を、それは(被写体に)そのエラーを押し出す続けます。なぜそれがビューモデルで起こるのだろうか。私がこのエラーを理解するのを助ける方法に関する考えは非常に高く評価されています。

EDIT:

  • はコード

  • の残りの部分を追加し、プロジェクトは現在、EF 4.0を使用しています。それが適切かどうかはわかりません。

+0

エラーが発生した行は本当ですか?あなたのビューのどこかに 'Model'という別の変数を宣言したようです。 –

+0

ええ、同じ行。たとえそれをtelerikグリッドに入れようとしても、それは私にそのエラーを与えます。 – gdubs

+0

ビューからさらにコードを挿入できますか? – jrummell

答えて

3

"Model"は、すでに宣言している場合は何かを宣言するために使用できませんか?

これをよく説明すると、これが私を助けました。 Model conflicts with declaration

私は実際に最初の少数の編集ボックスでモデルを宣言していました。
など。 <%: Html.DisplayFor(Model => Model.FighterName)%>

これをforeachで再度呼び出します。最初に宣言すると、そのエラーが発生します。

+0

恐ろしい - ありがとう!私は同じ正確な問題を抱えていた。 Visual Studioのように、副作用ではなく、問題にフラグを立てる必要があります。 (私はこの場合、_I_が問題だと理解していますが、私は自分自身から私を救うためにVSが好きです。) –

関連する問題