我不知道我做错了,但这是我的问题。我需要将View
的数据传递给另一个Controller/Action
。
在我的HTML表单中,我有
@using (Html.BeginForm("Preprocess", "Item", FormMethod.Post))
{
...some html...
...loop for each item in Items collection
<button type="submit" name="itemInfo" value="@Model.someValue">Submit</submit>
}
我在Item/Preprocess
操作(强类型视图)上收到了表单的数据。但是,我需要将其传递给“中央处理器”,该处理器根据某个标志处理数据。如何将我在此控制器上收到的值传递给另一个控制器?我是MVC的初学者,我甚至不确定这是否是正确的方法。
基本上,我有三个类似于上述表单的HTML表单,但具有不同的Controllers
和Views
。我需要他们调用一个中央主人 - Controller/Action
,当然还要通过Controller
将数据从表单传递给主HTTPPOST
。当然,每个Controller
必须将自己的数据格式化为主Controller
可以接受的类。我应该用什么代替Return View()
或RedirectToAction(...)
?
你们可以建议一种方法吗?
或许你们可以提出另一种方式。它可能不符合我的要求,但基本上我的要求是中央控制器/动作(或其他一些集中代码)可以接收数据并根据值进行操作
答案 0 :(得分:0)
你可以这样做:
return RedirectToAction("SomeAction", "SomeController",new { id=someString} );
答案 1 :(得分:0)
不确定我是否完全遵循您在此处尝试做的事情。但是根据你的描述,听起来你的设计是错误的。
如果您在控制器收到并处理数据后尝试执行一些常用操作,那么您应该将“中央控制器”提升为某种服务类,可由所有三个控制器访问。如有必要,服务类可以返回ActionResult:
return new ViewResult { ViewName = "MyForm" };
但是,如果您想拦截数据并执行一些常见操作,您可以编写自定义ActionFilter来执行中央控制器正在执行的任何操作,并使其他控制器保持清洁。