c# - 在某些情况下禁用 Required 验证属性

标签 c# asp.net-mvc asp.net-mvc-3 data-annotations

我想知道是否可以在某些 Controller 操作中禁用 Required 验证属性。我想知道这是因为在我的一个编辑表单上,我不要求用户为他们之前已经指定的字段输入值。然而,我随后实现了逻辑,当他们输入一个值时,它使用一些特殊的逻辑来更新模型,例如散列值等。

关于如何解决这个问题有什么建议吗?

编辑:
是的,客户端验证在这里是一个问题,因为它不允许他们在不输入值的情况下提交表单。

最佳答案

使用 View 模型可以很容易地解决这个问题。 View 模型是专门为满足给定 View 的需要而定制的类。因此,例如在您的情况下,您可以拥有以下 View 模型:

public UpdateViewView
{
    [Required]
    public string Id { get; set; }

    ... some other properties
}

public class InsertViewModel
{
    public string Id { get; set; }

    ... some other properties
}

将在其相应的 Controller 操作中使用:

[HttpPost]
public ActionResult Update(UpdateViewView model)
{
    ...
}

[HttpPost]
public ActionResult Insert(InsertViewModel model)
{
    ...
}

关于c# - 在某些情况下禁用 Required 验证属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5367287/

相关文章:

c# - Http MultipartFormDataContent

c# - 服务器执行失败(HRESULT : 0x80080005 (CO_E_SERVER_EXEC_FAILURE)) 异常

c# - 如何将整数反序列化为 int,而不是 long?

asp.net-mvc - 托管我的 ASP.NET MVC 3 应用程序

css - Twitter Bootstrap 更改了字段集图例的渲染,为什么?

c# - 本地数据库登录失败

asp.net-mvc - asp.net mvc - 如何将用户返回到上一个操作?

asp.net-mvc - MVC3 RTM中的RTM代表什么

c# - 实现扩展方法

.net - 404 - 在 Controller Y 上找不到公共(public)操作方法 X(ActionInvoker.InvokeAction 返回 false)