zoukankan      html  css  js  c++  java
  • MVC页面上多个提交按钮提交到不同的Action

    使用mvc扩展类,ActionNameAttribute方法如下:

    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
        public class MultiButtonAttribute : ActionNameSelectorAttribute
        {
            public string Name { get; set; }
            public string Argument { get; set; }
            public MultiButtonAttribute(string name)
            {
                this.Name = name;
            }
            public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
            {
                var key = ButtonKeyFrom(controllerContext);
                var keyIsValid = IsValid(key);
    
                if (keyIsValid)
                {
                    UpdateValueProviderIn(controllerContext, ValueFrom(key));
                }
    
                return keyIsValid;
            }
    
            private string ButtonKeyFrom(ControllerContext controllerContext)
            {
                var keys = controllerContext.HttpContext.Request.Params.AllKeys;
                return keys.FirstOrDefault(KeyStartsWithButtonName);
            }
    
            private static bool IsValid(string key)
            {
                return key != null;
            }
    
            private static string ValueFrom(string key)
            {
                var parts = key.Split(":".ToCharArray());
                return parts.Length < 2 ? null : parts[1];
            }
    
            private void UpdateValueProviderIn(ControllerContext controllerContext, string value)
            {
                if (string.IsNullOrEmpty(Argument))
                    return;
                controllerContext.RouteData.Values[this.Argument] = value;
            }
    
    
            private bool KeyStartsWithButtonName(string key)
            {
                return key.StartsWith(Name, StringComparison.InvariantCultureIgnoreCase);
            }
    
    
        }

    Controller:

    [HttpPost] 
    [MultiButton(Name = "delete", Argument = "id")] 
    public ActionResult Delete(string id) 
    { 
        return View(); 
    } 

    或者

            [HttpPost]
            [MultiButton("btnSearch")]
            public ActionResult Index(AttendanceList model)
            {
                    return View(model);
            }

    View:

    <input type="submit" value="查询"  name="btnSearch" />
    <input type="submit" value="删除" name="delete:id" />
  • 相关阅读:
    Nginx之HTTP过滤模块
    Nginx之编写HTTP模块
    Nginx之最简单的反向代理机制分析
    Nginx之搭建反向代理实现tomcat分布式集群
    Nginx之configure选项
    Nginx-HTTP之ngx_http_top_body_filter
    Nginx-HTTP之ngx_http_top_header_filter
    Nginx-HTTP之静态网页访问流程分析二
    error: ‘Poco::UInt16’ has not been declared
    字符数组中查找字符串或字符数组
  • 原文地址:https://www.cnblogs.com/wuyubing/p/4898654.html
Copyright © 2011-2022 走看看