一起谈.NET技术,ASP.NET MVC中实现多个按钮提交的几种方法
2011-08-29 19:31
891 查看
有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能。
代码
代码
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public class MultiButtonAttribute : ActionNameSelectorAttribute { public string Name { get; set; } public string Argument { get; set; } 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.Controller.ValueProvider[Argument] = new ValueProviderResult (value, value, null); } private bool KeyStartsWithButtonName(string key) { return key.StartsWith(Name, StringComparison.InvariantCultureIgnoreCase); } } //如果是在MVC 2.0中的话,将UpdateValueProviderIn方法改为: private void UpdateValueProviderIn(ControllerContext controllerContext, string value) { if (string.IsNullOrEmpty(Argument)) return; controllerContext.RouteData.Values[this.Argument] = value; }
相关文章推荐
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- [转]ASP.NET MVC中实现多个按钮提交的几种方法
- 转:ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法【转】
- (转)ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- 【MVC】ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC中实现多个按钮提交的几种方法
- ASP.NET MVC实现多个按钮提交的方法