警告:这是我的第一个网络应用程序。
我有 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 的选择显示另一个列表,然后用户再次选择。
此时我想发布 Aid、Bid、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());
}