我建议不要使用提交类型的输入。而是尝试使用 html 锚(链接) - 或 MVC 中的 Html.ActionLink 重新加载页面或重定向到某个地方。
此处发布了类似的问题:表单中的取消按钮
更新 1 - 根据@sam360 评论
您可以尝试将 MultiButtonAtribute 放在应该处理取消按钮请求的操作方法上:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MultiButtonAttribute : ActionNameSelectorAttribute
{
public MultiButtonAttribute(string matchFormKey) : this(matchFormKey, null) {
}
public MultiButtonAttribute(string matchFormKey, string matchFormValue) {
this.MatchFormKey = matchFormKey;
this.MatchFormValue = matchFormValue;
}
public string MatchFormKey { get; set; }
public string MatchFormValue { get; set; }
public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
{
string value = controllerContext.HttpContext.Request[MatchFormKey];
return value != null && (value == MatchFormValue || MatchFormValue == null);
}
}
如果按钮的名称(“取消”)将在请求中匹配,则取消操作将处理该请求。
[HttpPost]
[MultiButton("cancel")]
public ActionResult CancelAction(MyModel model)
{
// ... update the model (e.g. remove the last item from list and return the view with updated model
}
在表格中,您将拥有:
<input type="submit" name="cancel" value="Remove Item" class="cancel" />
但如果我理解得很好。您想在某种形式上动态添加/删除输入。您应该考虑在客户端使用 javascript 或 jQuery 函数来保存一些服务器请求(但如果您想支持未启用 javascript 的客户端,这可能不是您的选择)。