在ASP.NET MVC中创建自定义按钮(而不是用于创建、读取、更新和删除的按钮)

本文关键字:按钮 创建 读取 用于 更新 删除 MVC NET ASP 自定义 | 更新日期: 2023-09-27 18:28:31

我不知道你是否遇到过类似的情况,但我有一个要求:-

我运行了一个ASP.NET MVC网站,用于管理我们客户公司的详细信息。由于可用性问题,我们被要求删除一些复选框,并在编辑页面上用通用的"应用"按钮替换它们。

我们编辑页面上的当前场景是:

  1. "为所有资产启用速度设置"复选框
  2. "为所有资产启用纠正措施"复选框
  3. 单击"保存"按钮时,触发器会更新数据库

现在需要的是一个按钮来执行这两个操作。这显然需要一个新的NHibernate存储过程,但这是以后的问题。因此,我感兴趣的是,这种按钮能在MVC中实现吗?如果是的话,有没有人有任何经验可以帮助,特别是在构造ActionResult方法方面?谢谢。:)

在ASP.NET MVC中创建自定义按钮(而不是用于创建、读取、更新和删除的按钮)

我建议在这里查找解决方案:

http://weblogs.asp.net/dfindley/archive/2009/05/31/asp-net-mvc-multiple-buttons-in-the-same-form.aspx

基本上,您可以将数据发送到您的操作方法,并在那里检查要采取的操作过程——保存或应用。或者,你可以将它们划分为两个控制器动作,类似于这样(从上面的文章中了解到):

[ActionName("Register")]
[AcceptVerbs(HttpVerbs.Post)]
[AcceptParameter(Name="button", Value="cancel")]
public ActionResult Register_Cancel()
{
    return RedirectToAction("Index", "Home");
}
[AcceptVerbs(HttpVerbs.Post)]
[AcceptParameter(Name="button", Value="register")]
public ActionResult Register(string userName, string email, string password, string confirmPassword)
{
   // process registration
}

按钮

<button name="button" value="register">Register</button>
<button name="button" value="cancel">Cancel</button>

简单过滤器:

public class AcceptParameterAttribute : ActionMethodSelectorAttribute
{
    public string Name { get; set; }
    public string Value { get; set; }
    public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
    {
        var req = controllerContext.RequestContext.HttpContext.Request;
        return req.Form[this.Name] == this.Value;
    }
}