我正在使用MVC 3 Razor。我在我的视图上有2个提交按钮我遇到的问题是提交按钮导致模型的验证。我想将具有特定输入控件的单个提交按钮连接起来进行验证。
答案 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博客文章的链接,我在单个视图中使用多个表单时使用了该文章。