2013-07-19 24 views
0

enter image description here如何從一個視圖中保存兩個實體。假設我有兩個實體派對和一對多關係人物。現在我需要保存派對視圖中的兩個實體。我正在使用ASP.NET MVC4。從一個視圖中保存兩個實體

public partial class Cm_Opt_Pty_Party_S 
{ 
    public Cm_Opt_Pty_Party_S() 
    { 
     this.Cm_Opt_Psn_Person_S = new HashSet<Cm_Opt_Psn_Person_S>(); 
    } 

    public int Pty_ID { get; set; } 
    public Nullable<int> Pty_PARTYTYPECODE { get; set; } 
    public string Pty_FULLNAME { get; set; } 
    public string Pty_GOVTID { get; set; } 
    public Nullable<int> Pty_GOVTIDTC { get; set; } 
    public Nullable<int> Pty_GOVTIDSTAT { get; set; } 

    public virtual ICollection<Cm_Opt_Psn_Person_S> Cm_Opt_Psn_Person_S { get; set; } 
} 
+0

我們需要更多的細節。你有什麼問題? 「Party」和「Person」看起來像什麼。你需要顯示創建一個包含兩個實體的視圖模型嗎? – James

+0

看到下面的答案我已經添加了,這是我的代碼示例。在這裏我的個人實體與聚會有關 – Kashif

+0

而不是發佈答案,你應該編輯你的問題。你能展示你的模型嗎?根據你所說的,它聽起來像一個包含「Person」列表的「Party」。你的代碼究竟有什麼問題,你會得到一個錯誤嗎?如果是這樣,有什麼錯誤?爲了得到合理的答案,給出所有需要的細節。 – James

回答

1

你可以做的就是創建一個ViewModel這個類包含創建兩個實體所需的相關性。

然後,您將View替換爲ViewModel,然後將其傳遞給控制器​​。

當你想保存實體時,你可以建立單獨的實體並保存它們。

1

我對您的問題有了更好的理解,因此編輯此答案以顯示我將使用的解決方案。

您的控制器會將Party對象傳送到您的視圖以顯示Party信息。使用循環可以顯示集合中包含的項目。

@foreach(var m in Model.Persons) 
{ 
    @Html.DisplayFor(model=>m.FirstName) 
    @Html.DisplayFor(model=>m.Surname) 
} 

當你想要更多的項目加入到集合,您將需要渲染的局部視圖或包含形式添加Person新的看法。這將是強類型爲Person模型和控制器動作recieving的職位將被期待Person

舉例來說,如果一個Person剛剛有了一個FirstNameSurnamePartyId形式將在您的視圖中使用這些傭工

@Html.TextboxFor(m=>m.FirstName) 
@Html.TextboxFor(m=>m.Surname) 
@Html.TextBoxFor(m=>m.PartyId) 

然後您將其提交回您的控制器,並具有將該人添加到集合的邏輯。然後返回包含Persons集合中新添加的Person的Party模型的視圖。

使用@Ajax.BeginForm或某些自定義Jquery/Javascript,您可以處理此異步以防止在此過程中刷新頁面。

如果你不想這樣做,另一種選擇是EditorTemplates。請看這裏例如:ASP.NET MVC LIST and Create in same view

+0

這裏的問題是我有一個包含Person列表的Party。所以如何保存派對視圖中的數據。不管你上面寫的是什麼,都是可以的,但是僅用於顯示,假設我需要創建新的人。像

@Html.EditorFor(model => model.Person_S.FIRSTNAME) @Html.ValidationMessageFor(model => model.Person.FIRSTNAME)
Kashif

+0

但我不能這樣寫

@Html.EditorFor(model => model.Person_S.FIRSTNAME) @Html.ValidationMessageFor(model => model.Person.FIRSTNAME)
因爲人是一個Icollection。我也無法循環,否則它會創建模板html的列表。 – Kashif

+0

Persons.Person是什麼?這裏的人是一個集合,但在這個集合中我沒有Person。 – Kashif

相關問題