在ASP.NET MVC中创建自定义按钮(而不是用于创建、读取、更新和删除的按钮)
本文关键字:按钮 创建 读取 用于 更新 删除 MVC NET ASP 自定义 | 更新日期: 2023-09-27 18:28:31
我不知道你是否遇到过类似的情况,但我有一个要求:-
我运行了一个ASP.NET MVC网站,用于管理我们客户公司的详细信息。由于可用性问题,我们被要求删除一些复选框,并在编辑页面上用通用的"应用"按钮替换它们。
我们编辑页面上的当前场景是:
- "为所有资产启用速度设置"复选框
- "为所有资产启用纠正措施"复选框
- 单击"保存"按钮时,触发器会更新数据库
现在需要的是一个按钮来执行这两个操作。这显然需要一个新的NHibernate存储过程,但这是以后的问题。因此,我感兴趣的是,这种按钮能在MVC中实现吗?如果是的话,有没有人有任何经验可以帮助,特别是在构造ActionResult方法方面?谢谢。:)
我建议在这里查找解决方案:
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;
}
}