我在mvc3 / c#中组建了一个向导。我的模型设置大致
public interface IStepView {}
public class Step1View : IStepView {}
public class Step2View : IStepView {}
我有一个父视图,显示这些步骤的2个部分视图中的一个。
我希望第2步的表单提交在同一个控制器上使用自定义操作。阅读类似的帖子似乎我需要做的是添加一个像这样的自定义路线
RouteTable.Routes.MapRoute("Step2Route", "", new { controller = "Demo", action = "MyAction" });
我在Main.cshtml上连接在一起
@using (Html.BeginForm())
{
@Html.BeginRouteForm("Step2Route", new { controller = "RolloverController", action = "Stuff" })
// and so on for each Step I want to use a custom action
}
这是这样做的吗?
答案 0 :(得分:0)
如果您不知道向导中的步骤数,则可以使用自定义路由来跟踪向导中的进度。
即。向导/ {WizardName}步骤/ {STEPNUMBER} /
但是,由于看起来您知道这些步骤,因此您对控制器的操作可以与没有自定义路径的操作相对应:
即RegistrationWizard / EnterInfo,RegistrationWizard / Confirm,RegistrationWizard / Success
为控制器上的每个操作创建一个get和post方法。使用相同的模型并使用RedirectToAction传递它或将其存储在会话中,以便在最后一步提交数据之前跟踪用户对数据所做的更改。