C# 在MVC3中,控制器如何知道不引人注目的验证结果?

C# 在MVC3中,控制器如何知道不引人注目的验证结果?,c#,asp.net-mvc-3,validation,controller,C#,Asp.net Mvc 3,Validation,Controller,我使用的是C,MVC3和VS2010 我注意到,即使valdiation结果为false,controller方法仍然会被执行。这使得验证在服务器端毫无用处。除非有办法得到结果 ----编辑--- 下面是我如何使用它。做得好吗?至少会显示验证消息,文本框变为红色 型号: public class CategoriaModel { [Required(ErrorMessage="Nome é obrigatório!")] [StringLength(10, ErrorMessag

我使用的是
C
MVC3
VS2010

我注意到,即使valdiation结果为false,controller方法仍然会被执行。这使得验证在服务器端毫无用处。除非有办法得到结果

----编辑---
下面是我如何使用它。做得好吗?至少会显示验证消息,文本框变为红色

型号:

public class CategoriaModel
{
    [Required(ErrorMessage="Nome é obrigatório!")]
    [StringLength(10, ErrorMessage = "First Name max length is 10")]
    public string Nome { get; set; }



}
视图:


测试
ModelState.IsValid
属性,但是如果客户端验证失败,则不应调用该操作。检查是否确实在验证所有模型属性。

测试
ModelState.IsValid
属性,但是如果客户端验证失败,则不应调用该操作。检查您是否真的在验证所有模型属性。

嗯,很奇怪。顺便说一句,要跟踪它,您只需在控制器中添加一个断点。观察ModelState对象,查看两个集合(键、值),找出谁是无效模型的罪魁祸首。测试ModelState.IsValid将阻止您的代码执行,但是如果您能理解表单仍然提交的原因,那就太好了。ModelState.IsValid为false。好的,测试它会像你说的那样解决我的问题,但是如果它能正常工作就好了。好的,现在你有了一个修复程序,为了了解谁出了错,检查ModelState.Keys和ModelState.Values集合,应该有一个属性项对模型进行invelidating。如果这样做,我可以知道哪些属性是无效的。在我的例子中,只有一个属性,所以这是不必要的(尽管如此,我还是这样做了,没有什么意外)。你知道为什么当客户端验证失败时控制器仍然被调用吗?一切似乎都是正确的。我正在使用默认的MVC3项目(带有登录和用户创建的项目)进行验证,如果客户端验证失败,则不会提交表单。我看到的代码和示例之间的唯一区别是jquery.unobtrusive-ajax.js包含。尝试删除它或在其他验证之后移动。嗯,非常奇怪。顺便说一句,要跟踪它,您只需在控制器中添加一个断点。观察ModelState对象,查看两个集合(键、值),找出谁是无效模型的罪魁祸首。测试ModelState.IsValid将阻止您的代码执行,但是如果您能理解表单仍然提交的原因,那就太好了。ModelState.IsValid为false。好的,测试它会像你说的那样解决我的问题,但是如果它能正常工作就好了。好的,现在你有了一个修复程序,为了了解谁出了错,检查ModelState.Keys和ModelState.Values集合,应该有一个属性项对模型进行invelidating。如果这样做,我可以知道哪些属性是无效的。在我的例子中,只有一个属性,所以这是不必要的(尽管如此,我还是这样做了,没有什么意外)。你知道为什么当客户端验证失败时控制器仍然被调用吗?一切似乎都是正确的。我正在使用默认的MVC3项目(带有登录和用户创建的项目)进行验证,如果客户端验证失败,则不会提交表单。我看到的代码和示例之间的唯一区别是jquery.unobtrusive-ajax.js包含。尝试将其删除或在其他验证后移动。
@Html.ValidationSummary(true)
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js") %>" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js") %>" type="text/javascript"></script>
@using (Html.BeginForm("Salvar", "Test", FormMethod.Post))
{


    @Html.LabelFor(m => m.Nome)
    @Html.EditorFor(m => m.Nome)
    @Html.ValidationMessageFor(m=>m.Nome)                           


    <input type="submit" value="Salvar" />
}
public ActionResult Salvar(CategoriaModel catModel)
        {

            ViewBag.StatusMessage = "Ok!";



            return View("Index");
        }