警告:這是我的第一個網絡應用程序。適當的POST數據方式MVC
我有4個模型,視圖和控制器。讓我們稱他們爲A,B,C,D(例如ModelA,ControllerA,ViewA)。他們都是基本的觀點,並帶有腳手架。
/ControllerA/Index
用戶開始於ViewA並且選擇第一項,其中用戶重定向到ViewB
/ControllerB/Function?Aid=1
ViewB示出了基於從選擇另一個ViewA列表。然後用戶選擇再次被重定向到ViewC
/ControllerC/Function?Aid=1&Bid=2
ViewC顯示基於來自ViewA和ViewB的選擇的另一個列表。然後用戶選擇再次被重定向到ViewD。
/ControllerD/Function?Aid=1&Bid=2&Cid=3
ViewD顯示了基於ViewA,ViewB和ViewC中的選擇的另一個列表,然後用戶再次選擇。
在這一點上,我想發佈援助,投標,CID和Did並將它們保存在我的數據庫中。理想情況下,用戶將點擊鏈接,數據將被髮布,然後該網站會將用戶重定向回主頁。我應該創建另一個模型和控制器來處理帖子嗎?我想過試圖從controllerD執行POST,但這看起來並不像這樣做的正確方式。
msdn教程僅顯示直接從強類型模型的視圖中發佈。我有點卡住了,我寧願不要把它弄成一團糟。
編輯的代碼 控制器
public ActionResult myFunction(int Aid = 0, int Bid, int Cid)
{
//query D stuff here
if (D == null)
{
return HttpNotFound();
}
return View(D.ToList());
}
[HttpPost]
[InitializeSimpleMembership]
public ActionResult CreateQuote(int Aid, int Bid, int Cid, int Did)
{
Quote myQuote = new Quote();
myQuote.Customer_ID_FK = (int)Membership.GetUser().ProviderUserKey;
myQuote.A_ID_FK = Aid;
myQuote.B_ID_FK = Bid;
myQuote.C_ID_FK = Cid;
myQuote.D_ID_FK = Did;
if (ModelState.IsValid)
{
db.Quotes.Add(myQuote);
db.SaveChanges();
db.Quotes.Max();
int mymax = db.Quotes.Max(q => q.ID);
return RedirectToAction();
}
return View(D.ToList());
}
[HttpPost]
[InitializeSimpleMembership]
public ActionResult CreateQuote(Quote myQuote)
{
myQuote.Customer_ID_FK = (int)Membership.GetUser().ProviderUserKey;
if (ModelState.IsValid)
{
db.Quotes.Max();
int mymax = db.Quotes.Max(q => q.ID);
db.Quotes.Add(myQuote);
db.SaveChanges();
return RedirectToAction();
}
return View(D.ToList());
}
如何在視圖中創建SaveResults鏈接?我無法弄清楚如何將'Aid,Bid,Cid和Did'變成一個對象(在你的例子中是MyEntity),這樣我就可以發佈它了。我的視圖已經使用ModelD,我可以添加第二個模型到視圖? – Calidus
有不同的處理策略。最簡單/最基本的方法是將要發送到服務器的數據放在
感謝您的幫助,您的答案和對http的學習更多一點,我想我終於明白了。 – Calidus