【问题标题】:MVC3 Getting a 'property field is required' error despite having no [Required] attribute尽管没有 [Required] 属性,但 MVC3 出现“需要属性字段”错误
【发布时间】:2011-12-02 10:12:04
【问题描述】:

我有这个代码:

@this.Html.DropDownListFor(vm => vm.FishId, 
    new SelectList(this.Model.Fishies, "FishId", "FishName", this.Model.FishId), "Please Select a Fish")

@this.Html.ValidationMessageFor(vm => vm.FishId)

这个模型很简单

public int FishId
{
    get;
    set;
}

所以这里没有验证。当我按下提交时,我收到一条消息说The FishId Field is Required.。这是客户端验证错误。知道是什么原因造成的吗?

如果我将验证消息更改为:

@this.Html.ValidationMessageFor(vm => vm.FishId, "Gotta select a fish, man")

然后错误消息(这是我想要的)更改为下拉列表的右侧,但验证摘要仍显示原始消息。

我将验证和消息作为RequiredField(...) 属性或自定义验证方法放置的所有其他内容。

这是怎么回事,如何更改验证摘要消息?

【问题讨论】:

  • 你的控制器方法是什么样的?

标签: asp.net-mvc asp.net-mvc-3 viewmodel validation


【解决方案1】:

尝试将 int 设置为可空

public int? FishId { get; set; } 

它应该通过验证,因为您允许空值

【讨论】:

  • 嗯,所以你是说 MVC 会'这不是可以为空的,所以我会放入默认验证'?是否可以保持它不可为空但在验证摘要中自定义错误消息?否则我将不得不做一些服务器端验证。
  • 您可以创建自己的验证属性,因此您可以按照自己喜欢的方式处理 DoprDownList 验证的工作方式。其他方式你必须在服务器端工作。还有 RemoteValidation,但我不确定是否可以按照您喜欢的方式工作,因为我从未将它用于类似的事情
【解决方案2】:

不确定是否要禁用验证或更改错误消息。如果是后者,那么您应该尝试将以下内容添加到您的模型中。

[Required(ErrorMessage="Gotta select a fish, man")]
public int FishId {get;set;}

【讨论】:

  • 原来这个效果更好,我试过这个,但就像我这个小丑一样,我把它应用到了错误的视图模型上!干杯:)
  • 我基本上已经完成了这个设置(2017 年),但我不断收到默认的“必需”消息,而不是我设置的 ErrorMessage。 :(
【解决方案3】:

创建实例并将其传递给打开的结果......

示例:return View("Add", new Customer());

这将使用默认值初始化所有值类型。

【讨论】:

    猜你喜欢
    • 2013-03-31
    • 1970-01-01
    • 2016-01-05
    • 2015-03-25
    • 1970-01-01
    • 2013-04-29
    • 2021-08-25
    • 2019-10-23
    • 2014-07-22
    相关资源
    最近更新 更多