2011-04-16 84 views
0

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

回答

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。除此之外,它定义了一个你用来触发验证的事件。

注意所有:这不是我原来的答复,我经过一番来回评价和一些测试在我身边改变了它完全

+0

那么我试过这个,但按钮不会发布到各自的行动。 – Vivek 2011-04-16 09:57:27

+0

你能让我们看看你使用的代码吗?你的观点是什么样子? – 2011-04-16 09:58:19

+0

我的要求是我有一个窗体上的几个文本框。我们可以说4个值是通过提交1保存的,其他4个是通过提交2保存的。是的,你是正确的两个提交按钮都会在同一个控制器中调用不同的操作。 – Vivek 2011-04-16 10:02:57

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) {...