2011-07-11 4 views
0

私はwebformsからmvcに私のアプリケーションをカバーしています。現時点では、私は設計上の問題です(私はちょうどmvcでそれを行う方法は分かりません)。私がやりたい私のコントローラでView and ICollection Question

public class DamagedItem 
{ 
    public Int32 LoanId {get;set;} 
    public String IdentityCode {get;set;} 
    public virtual ICollection<DamagedItems> DamagedItems {get;set;} 
} 

基本的に私のモデルは、このようなものになるだろう

public ActionResult Add(DamagedItem damagedItem) 
{ 
    //Do update logic here 

} 

、必要に応じて次に私の見解で、私はICollectionへ追加することができます。 しかし、私は私のコントローラからICollectionにアクセスしようとするとnullですので、私はこれを行うことはできません。ここで

は私がやりたいときの画像です: enter image description here

私はちょうどビューを更新し、私は私のICollectionへの、このような項目を追加する方法に、私の見解では、それをレイアウトする方法を知らないそして、ときに私私は自分のコントローラから追加したものにアクセスできるようにする必要がありますか?

おかげで、 ニック

編集:


私はビューの部分を使用して、AJAXを使用して下半分のためのすべてのロジックを実行すると、セッション変数に格納することを考えていました、しかし、私はそれをajaxに依存させたくないです。

答えて

0

2つのアクションを持つ2つのアクションがあり、2つのビューが生成されます。

あなたはLoadInformationModelのクラッセている必要があります

public class LoadInformationModel 
{ 
    public string StudentCode { get; set; } 
    public string FirstName { get; set; } 
    // etc.. 

    public ICollection<Damage> Type { get; set; } 
} 

対応するアクションを

[HttpGet] 
public ActionResult LoanInformation(int id) 
{ 
    var loanInfo = // get data by given id.. 
    var model = new LoadInformationModel { 
    StudentCode = loanInfo.StudentCode, 
    // etc 
    Type = new List<Damage> { new Damage { Value = "Damaged"}, new Damage { Value = "Damaged Again" } 
    } 

    return View(model); 
} 

同様RepairDataModelクラスとして

パブリッククラスRepairDataModel { パブリックブールCoveredByWarranty {取得します。セット; } パブリックICollection Status {get;セット; } }

そして対応するアクション

[HttpGet] 
public ActionResult Repair(int id) 
{ 
    // logic 
    return View(model); 
} 

あなたの仕事は

[HttpPost] 
public ActionResult(RepairDataModel model) 
{ 
    // save to db 
    return View(); 
} 

指数()メソッドによって返されたビューを提出したフォームその後、DBにデータを保存するだろうポストハンドラを作成することです、 likeのように作成することができる

@Html.RenderAction("LoanInformation") 

@Html.RenderAction("Repair") 

残りのdepenあなたのdesingと想像力にds。私はそれがあなたに方向を与えることを望む。

0

私が見ることができるのは、DamagedItemだけがCollectionの値を持つコンストラクタを持っていないことです。

public class DamagedItem 
{ 
    public DamagedItem() 
    { 
    DamagedItems = new List<DamagedItems>(); 
    DamagedItems.Add(new DamagedItem { Description = "Damaged" }); 
    } 

    public Int32 LoanId {get;set;} 
    public String IdentityCode {get;set;} 
    public virtual ICollection<DamagedItems> DamagedItems {get;set;} 
} 
+0

ビューには基本的に2つのフォームセクションがあり、1つはDamagedEntry全体を保存し、もう1つは損傷したアイテムのリストを作成します。 それでは、2番目のフォームセクションからコレクションを塗りつぶし、最初のフォームを使用してコレクションをすべて保存します。 私は意味があると思っています。 – xqwzid

+0

あなたはマスター/詳細ビューを作成しようとしていると言えます – xqwzid