【发布时间】:2014-11-29 19:57:35
【问题描述】:
我目前正在开发一个在MVC中生成动态Views的Framework,思路就是基于这个tutorial。
下一步是添加生成多个提交按钮的可能性,但我无法让它工作。我做了一些研究,发现this 方法。但是,由于我想动态生成这些按钮,所以这还不行。
我尝试的是在这里修改这个属性代码:
[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;
}
}
在调试时我挖掘了ValueProvider,发现Valueproviders集合中的JQueryFormValueProvider实际上包含了点击提交按钮的名称。
按钮是这样生成的:
<input type="submit" name="buttonClick:@Model.Id" value="@Model.Text" />
不幸的是,ValueProviders 不允许我遍历键,所以我不知道如何获得我在上面的屏幕截图中用红色圈出的值。 不需要是这种方法,重要的是,找出点击了哪个按钮。
【问题讨论】:
标签: c# asp.net-mvc-4