多个提交按钮和验证

时间:2011-04-16 05:37:05

标签: asp.net-mvc validation asp.net-mvc-3 button submit

我正在使用MVC 3 Razor。我在我的视图上有2个提交按钮我遇到的问题是提交按钮导致模型的验证。我想将具有特定输入控件的单个提交按钮连接起来进行验证。

3 个答案:

答案 0 :(得分:3)

将此课程添加到您的项目中:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class ButtonClickAttribute : ActionNameSelectorAttribute
{
    public string Name { get; set; }

    public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
    {
        return controllerContext.HttpContext.Request[Name] != null;
    }
}

在视图中:

<input type="submit" value="Connect to server" name="connect" />

在控制器中:

[HttpPost]
[ButtonClick(Name = "connect")]
public ActionResult Connect(ServerAddressModel model) {...

答案 1 :(得分:1)

好的,我一直在测试,实际上,如果您的模型上有多个标记为required的字段,但您希望通过多个表单发布模型,则每个提交按钮都会触发验证。

您可以选择手动触发jQuery验证,因此,您可以做的是使这些提交按钮正常按钮,即:

<input id="button1" type="button" value="Submit" />

然后将点击事件附加到这些按钮并在那里触发验证:

$("#button1").click(function() {
    $("#form1").validate(); // assumes a form with id="form1"

    // post the form here
});

你会对其他按钮/表单做同样的事情。

顺便说一下,我建议看一下jQuery Form plugin。除此之外,它定义了一个beforeSubmit事件,您可以使用它来触发验证。

请注意所有人:这不是我原来的答案,我在评论和来自我方的一些测试之后来回完整地完全。 / p>

答案 2 :(得分:0)

以下是Steve Sanderson博客文章的链接,我在单个视图中使用多个表单时使用了该文章。

Partial Validation in ASP.NET MVC 2