MVC3 - 验证输入 - create()和edit()之间的区别

时间:2011-12-23 20:35:41

标签: asp.net-mvc-3 validation

我再次努力验证输入。 让我们说我编辑一个客户和字段" name"需要通过

[Required(ErrorMessage = Constants.ErrorMsgNameMissing)]
public string NAME { get; set; }

在模型中。

编辑方法

[HttpPost]
edit(ViewModel vm)
{
    // some code here    
    try
    {
        UpdateModel(vm);
        // some code there
    }
    catch (Exception e)
    {
        return View(vm);
    }
}

执行UpdateModel(vm)时,如果名称为空,则抛出异常。然后我的视图显示了Html.ValidationSummary()。到目前为止,非常好。

现在,如果我通过

创建客户
[HttpPost]
create(ViewModel vm)
{
    if (ModelState.IsValid) { ... }
}

我没有UpdateModel()方法,因为没有更新的内容。 ModelState.IsValid似乎每次都会返回true。即使ViewModel为null。所以我遇到了麻烦。

如何验证?如果出现错误,我该返回什么?

更新:我认为昨天为时已晚。事实上,它确实有效。但我希望有一个例外而忘记了else { ... } ......

1 个答案:

答案 0 :(得分:1)

试试这个:

[HttpPost, ValidateInput(true)]
create(ViewModel vm)
{
    if (ModelState.IsValid) { ... }
}
相关问题