View
辅助类 MultipleButtonAttribute
<form action="" method="post">
@Html.TextBoxFor(model => model.userId)
@Html.TextBoxFor(model => model.userName)
<input type="submit" value="提交" name="action:Confrim" />
<input type="submit" value="测试" name="action:test" />
</form>
Control
[HttpPost]
[MultipleButton(Name = "action", Argument = "Confrim")]
public ActionResult Confrim(User u)
{
TempData["tu"] = u;
ViewData["vu"] = u;
return RedirectToAction("Add", "J_test");
}
[HttpPost]
[MultipleButton(Name = "action", Argument = "Test")]
public ActionResult Test()
{
return Content("test_test");
}
辅助类 MultipleButtonAttribute
using System;
using System.Web.Mvc;
using System.Reflection;
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MultipleButtonAttribute : ActionNameSelectorAttribute
{
public string Name { get; set; }
public string Argument { get; set; }
public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
{
var isValidName = false;
var keyValue = string.Format("{0}:{1}", Name, Argument);
var value = controllerContext.Controller.ValueProvider.GetValue(keyValue);
if (value != null)
{
controllerContext.Controller.ControllerContext.RouteData.Values[Name] = Argument;
isValidName = true;
}
return isValidName;
}
}