Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC工作流问题_Asp.net Mvc - Fatal编程技术网

Asp.net mvc MVC工作流问题

Asp.net mvc MVC工作流问题,asp.net-mvc,Asp.net Mvc,我正在构建一个电子商务应用程序,我有一个负责购买过程的控制器 在这些控制器中创建方法时,我注意到每个方法都负责处理来自前一个视图的输入 所以我有一个Quote方法,它返回一个Quote视图,用户正在与该视图交互,它的表单正在发布到一个付款方法。这意味着付款方法实际上是在返回付款视图之前处理报价页中的信息。“付款”视图将过帐到“已完成”方法(即在返回显示购买已完成的页面之前处理付款信息) 从webforms的背景来看,每个方法实际上都在处理上一页的信息,这似乎很奇怪。因此,付款方法不是“控制”付款

我正在构建一个电子商务应用程序,我有一个负责购买过程的控制器

在这些控制器中创建方法时,我注意到每个方法都负责处理来自前一个视图的输入

所以我有一个Quote方法,它返回一个Quote视图,用户正在与该视图交互,它的表单正在发布到一个付款方法。这意味着付款方法实际上是在返回付款视图之前处理报价页中的信息。“付款”视图将过帐到“已完成”方法(即在返回显示购买已完成的页面之前处理付款信息)

从webforms的背景来看,每个方法实际上都在处理上一页的信息,这似乎很奇怪。因此,付款方法不是“控制”付款,而是在返回付款视图之前“控制”报价页信息


我是否以错误的方式看待此问题?

这不是控制器方法正在处理上一个视图,而是告诉视图将信息传递给该控制器。没有必要将视图的信息传递给另一个控制器方法。这取决于如何对控制器-视图关系进行编码

例如,您的控制器中有一个Quote视图和一个Quote方法。控制器中可以有两种方法用于报价,一种用于显示信息,另一种用于处理从视图传递的信息

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" />
<% } %>

//我的html表单在这里

我将以这种方式对控制器进行编码,这样我就不会对处理我的视图的控制器方法感到困惑。当我在Quote中提交表单时,它会将信息提交到接受
httpPost
的Quote方法。尽管此处所述内容适合您的情况。

+1 OP应该关注Post/Redirect/Get模式。是的,PRG模式看起来可以让我更好地管理工作流,同时避免重复提交的问题。谢谢Mathew。找到了这个链接:比如说,我的ActionResult“Quote”接受了一个表单的值,这个表单可以托管在任何网站上。然后它必须在返回视图之前处理来自该表单的输入。但是,在该视图中有一个表单,可以发布用户在该页面上所做的任何选择。因此,我的ActionResult“Quote”必须处理两种不同的post场景。一个接受表单值以呈现视图页面的第一次显示,另一个接受视图页面中的值以在重定向到下一步之前进行处理。我想简单的答案是创建一个ActionMethod,在通过重定向传递到呈现quote视图的ActionMethod之前处理来自外部quote表单的信息。