在 ASP.NET MVC 中使用控制器上的两个不同按钮

Using two different buttons on the controller in ASP.NET MVC

我有一个 ASP.NET MVC 项目。在这个项目中,我有一个名为 MessageController 的控制器。我在这个控制器中有两种方法,一种是 HttpGet 另一种是 HttpPost.

我想 运行 在我的方法中使用 HttpPost 属性进行这样的操作。如果点击视图中的第一个按钮,将是一个操作,如果点击第二个按钮,将是另一个操作。

如何进行这个操作?

这是我的代码:

public class MessageController : Controller
{
    MessageManager mg = new MessageManager(new EfMessageDal());

    [HttpGet]
    public ActionResult NewMessage()
    {
        return View();
    }

    [HttpPost]
    public ActionResult NewMessage(Message p)
    {
        MessageValidator messagevalidator = new MessageValidator();
        ValidationResult result = messagevalidator.Validate(p);

        if (result.IsValid)
        {
            if (//clicking button1)
            {
                //operate first operation
            }
            else
                //operate second operation
        }
        else
        {
               //Error Messages
        }

        return View();
    }
}
  1. 如果你想使用单端点NewMessege,那么你必须添加参数(按钮名称,附加值)并将其与按钮绑定。然后你通过这个参数解析目标方法。这个新参数可以用 post model
  2. 包装
public class MessagePostModel
{
   public Message Message {get;set;}
   public int ButtonId {get;set;}
}
  1. 另一种选择是向控制器添加第三个 post 方法。每个按钮调用自己的端点,您可以在其中调用特定操作