jQuery验证,MVC和取消按钮

时间:2012-11-10 03:35:40

标签: asp.net-mvc jquery-validate

我正在使用ASP.Net MVC和jQuery不引人注目的客户端验证。 我有一个这样的按钮:

<input type="submit" name="SubmitButton" value="Add Item" class="cancel" />

通常,提交按钮进行POST调用以将新项目添加到列表中。显然,为此目的,我不需要验证,这可以正常工作。

问题是,在页面重新加载之前,所有字段的验证错误消息都会短暂显示!

我已经搜索了这个不显眼的验证脚本是否导致了这个或它在jQuery验证上的错误。

有什么想法吗?


更新:为了更好地澄清我的问题:

所需状态:当按钮被标记为“取消”时,表单将被回发而不显示任何错误消息。

当前状态:当按钮被标记为“取消”时,表单将被回发但是显示错误消息!!

1 个答案:

答案 0 :(得分:0)

我建议不要使用提交类型的输入。而是尝试在MVC中使用html anchor(链接) - 或Html.ActionLink重新加载页面或重定向到某处。
类似的问题发布在这里:Cancel button in form

更新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);
    }
} 

如果请求中的按钮名称(“取消”)匹配,则取消操作mathed将处理该请求。

[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的客户端,则可能不适合您。)