2015-04-30 36 views
0

我有一個表格,用戶首先輸入主控細節(支出),並輸入所有的孩子詳細信息(SpendFor)。我想添加另一行用戶可以添加下一個花費的細節。但是,我很困惑如何去做。我知道我可以使用局部視圖並在用戶點擊添加按鈕時添加一個新模型(SpendFor)。但是,一旦用戶完成添加所有「SpendFor」詳細信息,他將點擊保存按鈕。現在,如何檢索所有細節並保存。如何從視圖到控制器獲取主控和多個孩子的詳細信息

這是我SpendingViewModel

public class SpendingViewModel 
{ 
    public Spending spending 
    { 
     get; 
     set; 
    } 

    public List<SpendFor> lstSpendFor 
    { 
     get; 
     set; 
    } 
} 

消費類屬性: -

int Id 
    int ItemId 
    int MemberId 
    float Amount 

SpendFor類屬性: -

int Id 
    int SpendingId 
    int SpendForId 
    int Quantity 
    float Amount 

回答

0

您可以在收到控制器的方法來獲取數據使用的FormCollection從你的形式。

[HttpPost] 
public void SaveData(FormCollection collection) 
{ 
//Retrieve a single SpendingId value 
var myValue = collection.Get["SpendingId"]; 
} 

要從對象集合中獲取值,您只需要讓ListSpentFor對象具有不同的名稱。例如:

var count = 0; 
foreach(var spentForItem in spentForItems) 
{ 
//All fields will have different Ids and Names 
<input id="[email protected]" name="[email protected]" type="text"/> 
@count++; 
} 

您的帖子控制器方法裏面可以讀取這些信息作爲關:

[HttpPost] 
    public void SaveData(FormCollection collection) 
    { 
    //Loop through all input controls where names begin with spent-for- 
    foreach (var key in collection.AllKeys.Where(k => k.Contains("spent-for-")).ToArray<string>()) 
    { 
     //Do whatever you need to do with pulled variable 
     var valueToDoSomethingWith = collection[key]; 
    } 
    } 

還有其他的方法。這只是我常用的其中之一。希望我沒有在代碼中犯任何錯誤。我只是直接在記事本中輸入。 祝你好運。

+0

謝謝你,謝謝你,我認爲這會爲我做。但是,我將在我的代碼中應用此代碼並在今天晚上進行檢查。我會在那之後迴應。非常感謝您提出這麼快的答案。 – SajuPK

相關問題