必需的DataAnnotations需要BeginForm来激活MVC5中的验证

时间:2016-06-28 12:04:23

标签: c# html asp.net razor asp.net-mvc-5

是否有必要编写并将所有控件放在

@using (Html.BeginForm())    
{
    // HTML Elements and HTML Helpers.
}

使用[必需] DataAnnotations?

我在基于MVC5的应用程序中遇到了奇怪的问题。问题是我在模型中使用了一个名为例如“Credit”的属性,并且该属性的数据类型是整数,并在该属性上方设置[Required] DataAnnotations。

但我没有使用过Begin表单。所以在这种情况下验证不会触发。如果我写BeginForm然后验证工作。

所以,是否有必要放置所有html元素&在BeginForm中使用html帮助来验证控件?

谢谢你 -Nimesh。

2 个答案:

答案 0 :(得分:3)

如果您希望客户端验证起作用,那么表单控件等需要在<form>标记内(由HTML.BeginForm帮助程序生成)。无论如何,服务器端验证仍然有效。

与上面的评论者一样,我会问你为什么要首先在表单标签之外设置控件。即使您计划使用Ajax提交数据,使用表单标记也是更好的语义设计,因为它清楚哪些数据项属于一起,并且它还使收集数据更容易通过ajax提交(例如,如果你有jQuery,你可以使用$("#myForm").serialize()自动从表单中的所有控件中收集值并将其传递给ajax请求。)

答案 1 :(得分:1)

当我们将一些数据发布到服务器时,我们需要验证一些内容。要将一些数据发布到服务器,您需要使用表单标记,无论您使用的是BeginForm()还是<form>标记。您需要表单中的标签,这些标签将由服务器验证。

我想,这会给你问题的答案。享受!