2011-07-11 58 views
0

我正在將我的應用程序從webforms轉換爲mvc,此刻我處於設計問題(以及我只是不知道如何在mvc中執行此操作)。查看和ICollection問題

基本上我的模型應該是這樣的:

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,它是空的。

下面是當我想要做的圖像: enter image description here

我只是不知道如何打好它在我看來,我如何將此類項目添加到我的ICollection的,當我更新視圖,然後需要保存我有權訪問我從控制器添加的內容?

感謝, 尼克

編輯:


我想在視圖中使用的部分,並用ajax做所有的邏輯下半部並將其存儲在一個會話變量,但我不想讓它依賴於ajax。

回答

0

最好分離:你應該有2個動作,它產生2個視圖。

你應該有LoadInformationModel CLASSE:

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 { 公共BOOL CoveredByWarranty {獲得;組; } public ICollection Status {get;組; } }

和相應的行動

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

你的任務是創建後的處理程序,將數據保存到數據庫,然後表單提交

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

由Index返回的視圖()方法,可以像

@Html.RenderAction("LoanInformation") 

@Html.RenderAction("Repair") 

其餘依賴關於你的設計和想象。我希望這會給你方向。

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

該視圖基本上有兩個表單部分,一個用於保存整個DamagedEntry,另一個用於構建損壞項目的列表。 那麼我如何填寫第二個表單部分的集合,然後使用第一個表單保存它。 我希望我是有道理的.. – xqwzid

+0

你可以說我想創建主/細節視圖 – xqwzid