2011-04-12 60 views
0

我正在为我的网站使用ASP.NET MVC 3。调用另一个控制器发布方法

我创建了一个具有“Previous,Next和Save”按钮的分部视图。我在我的母版页上调用这个部分视图。

我的要求是,在我所有的View我必须能够通过将各自的Model数据传递给控制器​​动作,在不同的控制器中调用不同的Save方法。

  • 我有4个步骤输入的数据,我必须在每个步骤中不同的控制器。
  • 如果我在第1步和我点击保存表单值应该去Step1Controller的操作方法,
  • 如果我在第2步,然后后应该调用Step2Controller

事情是这样的:

public ActionResult Save(GenericModel model) 
{ 
    //use reflection to find out model type 

    //call appropriate controller action with model 

    return RedirectToAction("Create", new { Controller = "Conference", Action = "Create" }); 
} 

这种保存方法将被要求对Master pageSave按钮。我怎样才能做到这一点?

+0

这听起来像是一个潜在的控制器和模型的概念误用。为什么单个视图访问多个控制器以获取具有相同模型的表单帖子的结果?如果你只需要调用其他函数,就可以在同一个控制器中创建一个函数,但是你需要重新评估你在这里要做的事情。每个视图(或部分视图)应该包装自己的形式,并在提交时调用其自己的控制器动作。 – dodexahedron 2012-08-18 02:21:31

回答

0

表单在控制器上的单独操作?

如果是这样,只需在每个页面上设置表单动作以指向相关的控制器。所以表格1是

<form method="post" action="/step1controller/action"> 

表2:

<form method="post" action="/step2controller/action"> 

这是否解决问题了吗?

+0

我无法给出具有特定步骤的控制器和操作名称的表单,因为将在所有其他视图上使用相同的保存按钮,因此它将在共同控制器中进行决定,该控制器将进一步调用适当的控制器操作。我想要做的是我的保存按钮将从所有视图调用每个帖子的控制器操作,并从那里决定哪个控制器被传递给该操作的模型被调用的保存方法。 – Vivek 2011-04-12 10:20:17

0

我会在控制器中创建一个私有方法,并在第一步的每个部分调用。

private bool Save(GenericModel model) 
{ 
    ...... 
} 

[HttpPost] 
public bool SaveStep1(GenericModel model) 
{ 
     this.Save(model); 
} 

[HttpPost] 
public bool SaveStep2(GenericModel model) 
{ 
     this.Save(model); 
} 
相关问题