2011-12-02 49 views
3

我有这样的代码:MVC3得到一个“属性字段是必须的”的错误,尽管没有[必需]属性

@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(...)的属性,或者在自定义的验证方法。

怎么回事,我该如何更改验证摘要信息?

+0

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

回答

5

不知道如果要禁用验证或更改错误信息。如果是后者,那么你应该尝试添加下面的模型。

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

原来这个效果更好,我曾试过这个,但喜欢这个小丑我是,我已经将它应用于错误的视图模型!欢呼:) – NibblyPig

+0

我基本上有这个确切的设置(这里在2017年),但我一直得到什么似乎是默认的“必需”消息,而不是我设置的ErrorMessage。 :( –

11

尽量把INT可空

public int? FishId { get; set; } 

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

+0

嗯,所以你说MVC会'这不是空的,所以我会把默认验证'?是否有可能使它不可为空,但在验证摘要中定制错误消息?否则,我将不得不做一些服务器端验证。 – NibblyPig

+0

你可以创建你自己的valdiation属性,所以你可以处理你喜欢DoprDownList验证应该如何工作的方式。其他方式你必须在服务器端工作。也有RemoteValidation,但我不知道如果可以按照你喜欢的方式工作,因为我从来没有用过这样的东西 – Iridio

+0

很酷,谢谢=) – NibblyPig

1

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

例子:返回视图( “添加”,新客户());

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

相关问题