我正在构建一个电子商务应用程序,我有一个负责购买过程的控制器。
我在创建这些控制器中的方法时注意到的是,每个方法都负责处理来自先前视图的输入。
所以我有一个Quote方法返回一个Quote视图,用户正在与视图进行交互,其表单正在发布到Payment方法。这意味着Payment方法实际上是在返回付款视图之前处理报价页面中的信息。 “付款”视图过帐到“已完成”方法(在返回显示购买完成的页面之前正在处理付款信息)。
来自webforms背景,每个方法实际上处理来自上一页的信息似乎很奇怪。因此,付款方式不是“控制”付款,它实际上是“控制”报价页面信息,然后返回付款视图。
我是以错误的方式看待这个吗?
答案 0 :(得分:1)
不是Controller方法正在处理前一个视图,而是告诉您的视图将信息传递给该控制器。没有必要将View的信息传递给另一个Controller方法。这取决于您如何编码控制器 - 视图关系。
例如,您的控制器中有一个报价视图和一个报价方法。您可以在控制器中使用两种方法,一种方法负责显示信息,另一种方法处理从视图传递的信息。
public ActionResult Quote()
{
return View();
}
[httpPost]
public ActionResult Quote(FormCollection quoteForm)
{
// process your Quote form
return RedirectToAction("Payment");
}
我的报价视图
<% using(Html.BeginForm()) { %>
// my html form here
<input type="submit" text="submit" />
<% } %>
我将以这种方式对我的控制器进行编码,这样我就不会对处理我的View的控制器方法感到困惑。当我在Quote中提交表单时,它会将信息提交给接受httpPost
的Quote方法。虽然Tassadaque这里所说的是适合你的情况。
答案 1 :(得分:0)