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