2012-03-22 76 views
0

我不知道您是否遇到过类似的情况,但这是我给出的一个要求: -在ASP.NET MVC中创建一个自定义按钮(不是用于创建,读取,更新,删除的按钮)

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

,我们有我们的编辑页面上当前的情形是:

  1. 复选框“启用所有资产速度设置”
  2. 复选框“启用所有资产纠正措施”
  3. 在点击Save按钮,触发器更新数据库。

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

回答

1

我建议你找这里的解决方案:

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; 
    } 
} 
+0

感谢您的链接。将保持你的进展。 – cmnunis 2012-03-22 21:12:11