2011-05-30 127 views
1

我有兩個控制器函數:一個用於默認查看,一個用於回發。我使用第一個將一些默認值分配給模型列表。第二個是將附加值添加到列表中。之後,頁面顯示列表的內容。現在,除了最新的控制器功能外,我正在失去列表中的所有內容。ASP.NET MVC中的持久模型數據

我想讓我的模型數據堅持下去,這怎麼辦?

回答

1

我假設你有一個像這樣的情況:

public class Model { 
    public List<..> List { get; set; } 
    ... 
} 

public class MyController 
{ 
    public ActionResult List() { 
    return View(new Model { List = new List<..> { /* some items */ } }); 
    } 

    [HttpPost] 
    public ActionResult AddToList(Model model, string itemText) { 
    model.List.Add(/* another item with specified text*/); 
    return View("List", model); 
    } 
} 

在顯示的列表頁中您可能已增加了1項與AddToList動作或動作列表初始化項目的整個列表。發生的事情是很自然的,因爲你不會把名單放回去。

如果是這種情況,那麼您必須回發整個模型,包括列表本身以便將項目添加到現有列表。

這確實是爲列表頁面生成正確視圖的問題。觸發AddToList操作的表單必須包含整個模型/列表的日期。由視圖生成的HTML應該看起來像這樣:

... 
<form method="POST" action="/MyController/AddToList"> 
    <input type="hidden" name="model.List[0]" value="value1" /> 
    ... 
    <input type="hidden" name="model.List[N]" value="valueN" /> 
    New item text: <input type="text" name="itemText" /> 
    ... 
</form> 
... 
0

在數據庫中存儲數據(使用EF(http://msdn.microsoft.com/en-us/library/bb399572.aspx))。