我在項目中使用帶EF模式的MVC-Viewmodel。MVC-Viewmodel和LINQ,將值插入到一個表中,並通過兩個其他表中的其他兩個值標記該值
我有3個表格,Question,CoreValue,SubjectType。 SubjectType和CoreValue與Question有很多很多關聯,這兩個表並不假設有任何新值,但用戶可以創建問題,這樣Question表就會在用戶創建新數據時獲取新數據。我使用CoreValue和SubjectType的兩個下拉列表,以便用戶在創建問題時可以選擇CoreValue和SubjectType。
這裏是我的HTTPGET控制器操作:
// GET: /Admin/Create
public ActionResult Create()
{
CoreValueRepository Crep = new CoreValueRepository();
SubjectTypeRepository Srep = new SubjectTypeRepository();
CreateViewModel model = new CreateViewModel();
List<SubjectType> subjectypes = Srep.getall();
List<CoreValue> corevalues = Crep.getall();
model.SubjectTypes = new SelectList(subjectypes, "SID", "Sname");
model.CoreValues = new SelectList(corevalues, "CID", "Cname");
return View(model);
}
這裏是我的ViewModel:
公共類CreateViewModel {
public string QuestionText { get; set; }
public string Sname { get; set; }
public string Cname { get; set; }
public SelectList SubjectTypes { get; set; }
public SelectList CoreValues { get; set; }
}
我使用存儲庫CRUD操作和視圖模型來處理用戶界面中的數據。
現在我必須在我的控制器中編寫HTTPPOST操作Create,將問題數據插入到我的數據庫中,並且需要使用CoreValue ID和SubjectType ID標記問題。所以我想着開始編寫HTTPOST動作Create,而且我想知道是否有人可以幫我解決這個問題。
在此先感謝!
最好的問候!
謝謝你的回答!你有什麼想法我可以用我現在的代碼做我的HTTPPOST嗎? – Obsivus 2012-02-20 17:33:49
好吧,如果你在你的viewmodel中保留了selectList,我不知道你是否有權訪問你在HTTPOST中的viewmodel中的seleclist的selectedValue。那就是爲什麼我給你另一種方式來做這件事。在httpost中,參數模型將包含用戶輸入的所有信息,因此您只需將此參數傳遞給您的存儲庫以進行保存即可。 – ThePaye 2012-02-20 18:03:24
Okey我試着用viewbag var newQuestion = question(); newQuestion.SubjectTypeId = model.SubjectTypeID;不工作beacuse newQuestion是一個問題類,我只能選擇問題表的值,而不是subjectTypes ID。 :S – Obsivus 2012-02-20 19:14:48