我有一个带有表单的网页,看起来像这样:

@using (Html.BeginForm("MyAction", "Controller", FormMethod.Post))
{
    // html input fields here
    // ...
    // [SUBMIT]
}


当用户按下提交按钮时,将调用以下功能:

public ActionResult MyAction ( string id )
{
    // default action
}

[HttpPost]
public ActionResult MyAction ( MyModel model )
{
    // called when a form is submitted
}


现在我的问题是,我必须添加另一种形式。但是我怎么知道提交的是哪个表格?因为两者现在都将以第二种(HttpPost)方法结束...

分离两个表单动作的好方法是什么?请注意,提交表单时,我必须停留在同一页面上。我无法将自己重定向到另一个页面/控制器。

最佳答案

如果我正确理解了您的问题,您将看到一个包含两种形式的页面。
作为第一种方法,我将把每个表单发布到同一控制器的不同动作中。

首先

@using (Html.BeginForm("MyAction", "Controller", FormMethod.Post))


第二

@using (Html.BeginForm("MyAction2", "Controller", FormMethod.Post))


然后,对您的两个操作进行一些重构以遵循DRY principle

相反,如果您需要将两种形式都发布到同一操作上,那么我将放置一个隐藏的输入,以告知被调用的内容。

关于c# - MVC3中的多种形式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9973999/

10-11 02:30