我有一種情況,我必須從用戶那裏獲得輸入(表單)。顯示繼續按鈕之後按下下一個查看頁面。但在繼續按下後,我不想將模型存儲在數據庫中。我必須根據用戶提供的輸入顯示一些細節(組合一些表格),然後再從用戶那裏獲取一些數據。只有這樣我才能將模型存儲在相應的表中。 我該如何執行此操作?我嘗試從用戶獲取Model
並傳遞給生成下一頁的函數。這是做到這一點的方法嗎?或者有其他方法?.NET MVC3/Holding temp model
0
A
回答
1
將第一個表單提交的模型存儲在session
中。
[HttpPost]
public ActionResult ContinueForm1(Model1 model1)
{
if(ModelState.IsValid)
{
Session["Model1"] = model1;
return View("Form2");
}
return View();
}
[HttpPost]
public ActionResult ContinueForm2(Model2 model2)
{
if(ModelState.IsValid)
{
... model2 is already here, get the model1 from session
... and save to datatbase finally return a different view or redirect to some
... other action
}
return View();
}
0
你正走向正確的軌道。
您需要抓取從第一個視圖返回的模型 - 最好是在這裏使用ViewModels,而不是直接綁定到您的db模型。看看http://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/和Why should I use view models?至於爲什麼這些都是好東西。
最簡單的方法是將模型作爲參數傳遞給您的方法,例如
假設您的視圖使用相同的ViewModel(可能會也可能不會),那麼您可以直接將視圖模型發送到您的新視圖 - 否則您可以將這些元素複製到新的視圖模型中併發送該視圖。
例如
[HttpPost]
public ViewResult Step1(MyViewModel viewModel)
{
//Do some validation here perhaps
MySecondViewModel secondViewModel = new MySecondViewModel{
Id = viewModel.Id,
// etc. etc.
};
return View("Step2", secondViewModel);
}
然後,您可以繼續進行,直到您必須堅持實體到數據庫。 注意,只要視圖強制輸入到ViewModel,您不需要在表單中做任何特殊的事情就可以將模型作爲參數發佈。
相關問題
- 1. 防止.NET寫入到C:\ Windows \ Temp
- 2. 爲什麼「$ temp = 0; echo〜$ temp;「print -1?
- 3. .NET TraceListener如何配置爲登錄TEMP文件夾
- 4. PIVOT和TEMP TABLE
- 5. Arduino temp&led
- 6. SQL Select Into #Temp
- 7. SQL SERVER TEMP FILE
- 8. 添加temp欄
- 9. java中的(char)temp和Character.toChars(temp)和String.valueOf(Character.toChars(temp))之間的區別
- 10. Model
- 11. Model
- 12. MVP(Model View Presenter)或MVC(Model View Controller)
- 13. 爾康:temp目錄
- 14. SQL插入#TEMP表
- 15. DBI :: mysql和File :: Temp
- 16. 用python寫入%temp%?
- 17. objMailItem.Attachments.add和%temp%位置
- 18. Display temp div in view
- 19. ssis temp table exec proc
- 20. Spring MVC Model model life-cicle
- 21. model from model返回NULL
- 22. 「struct node * temp」和「struct node *&temp」之間的區別是什麼?
- 23. #Temp存儲在哪裏?或#temp如何存儲
- 24. 「DELETE TOP(1)FROM @TEMP」或「DELETE FROM #TEMP WHERE ..」更快嗎?
- 25. Python理解:對於x [如果temp <= xmax],xlist中的temp:
- 26. ssis中buffer temp和blob temp的實際用法
- 27. Symfony FORMS:{'model'=> $ this-> getRelatedModelName('model')}和{'model'=>'model'}在setWidgets中的差異
- 28. Carrierwave Temporary File Without Model
- 29. Xamarin.Forms在ManyToOne關係上的Sqlite-net NotSupportedException「不知道<model>」
- 30. .NET MVC 3自定義十進制? Model Binder