【问题标题】:Is it possible to use [Required] attribute in model, but not in controller是否可以在模型中使用 [Required] 属性,但不能在控制器中使用
【发布时间】:2012-06-27 10:25:10
【问题描述】:

是否可以在模型中使用 [Required] 属性,但不能在控制器中使用。

例如我想使用一个对象,我将在其中设置几个参数,并且我想为这个对象的类设置属性[必需]。

是否可以使用 ModelState.IsValid 之类的逻辑或类似的东西。

下面是代码示例: EmployeeModel 员工 = this.ToObject(employeeXml);

Employee 模型具有属性名称。此属性是必需的。如何验证?

问候,谢尔盖。

【问题讨论】:

    标签: c# asp.net asp.net-mvc


    【解决方案1】:

    您可以使用TryUpdateModel方法根据模型验证规则更新ModelState:

    public BranchWizardStep GetNextStep(FormCollection formCollection)
    {
        TryUpdateModel(_someModel);
    
        if (ModelState.IsValid) 
        {
            //...
        }
    }
    

    编辑: 但最好使用仅验证模型的TryValidateModel 方法。

    【讨论】:

    • 你刚刚拯救了我的一天!我昨天花了3个小时!谢谢你,伊万!你是我的朋友!!!
    • >编辑:但最好使用仅验证模型的 TryValidateModel 方法。是的...因为 TryUpdateModel 更新了 Id 字段 :) 谢谢!
    【解决方案2】:

    将此添加到您的模型中using System.ComponentModel.DataAnnotations;

    然后在 yr 属性上方添加

    [Required(ErrorMessage = "This is required")]
    [StringLength(100)]
    

    如果您还想要显示名称,请添加 using System.ComponentModel;

    并在 yr 属性上方添加此内容

    [DisplayName("Login name")]
    

    【讨论】:

    • if (ModelState.IsValid) 你在你的控制器中使用它主要是在回发
    • 是的,我知道如何使字段成为必填项,我不知道如何使用这些注释而不是非模型类。我的意思是这个对象不会通过 Action 传递。
    • >if (ModelState.IsValid) 你在你的控制器中使用它,主要是在回发时我不需要它在控制器中
    猜你喜欢
    • 2012-11-20
    • 2010-10-23
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多