Validation 在我的下拉列表don';行不通
我使用durandal模板+breeze处理一个asp.net mvc项目 我想在视图上定义用于添加/编辑操作的验证逻辑 到目前为止,它适用于文本,即从数据库填充的下拉列表:当元素不包含任何数据时,由于敲除验证,元素被标记为红色 但它不适用于从简单列表填充的下拉列表。 填充列表的元素来自枚举:Validation 在我的下拉列表don';行不通,validation,knockout.js,breeze,Validation,Knockout.js,Breeze,我使用durandal模板+breeze处理一个asp.net mvc项目 我想在视图上定义用于添加/编辑操作的验证逻辑 到目前为止,它适用于文本,即从数据库填充的下拉列表:当元素不包含任何数据时,由于敲除验证,元素被标记为红色 但它不适用于从简单列表填充的下拉列表。 填充列表的元素来自枚举: public class Transport { [Key] int id { get; set; } ... [Required] public EnumCate
public class Transport
{
[Key]
int id { get; set; }
...
[Required]
public EnumCategory Category { get; set; }
}
public enum EnumCategory
{
Cat1,
Cat2,
Cat3
}
第一个问题:我不知道是否可以从我的模型(服务器端)检索枚举以在客户端使用它?现在,我创建了一个用于填充下拉列表的阵列客户端:
var categories = [
{ id: 1, description: "Cat1" },
{ id: 2, description: "Cat2" },
{ id: 3, description: "Cat3" }];
第二个问题:显示我的视图时,如果类别下拉列表已经包含一些数据,则验证工作正常(我的意思是,如果用户清除下拉列表,则该字段将标记为红色)。但是,如果在显示视图时类别下拉列表不包含任何数据,则该下拉列表不会标记为红色
当验证失败时,我要做的是更改元素的背景颜色(如果无效)(感谢css“input validation error”>>红色)
有人知道为什么对我的下拉列表的验证不起作用吗
谢谢。当你说“清除下拉列表”时,如果只有三个选项,怎么可能不选择一个选项呢。您是否可以制作第一个下拉项“选择一个项目…”,这样您就知道始终会有一个项目。如果下拉索引为0,则显示红色错误消息
另一个选项是,如果selectedindex为0或itemcount为0,则显示红色错误消息
这有帮助吗?当你说“清除下拉列表”时,如果只有三个选项,怎么可能不选择一个选项呢。您是否可以制作第一个下拉项“选择一个项目…”,这样您就知道始终会有一个项目。如果下拉索引为0,则显示红色错误消息
另一个选项是,如果selectedindex为0或itemcount为0,则显示红色错误消息
这有帮助吗?最后,我在我的类别列表中添加了一个id为空的元素,使它工作起来:
var categories = [
{ id: '', description: '--Choose--' },
{ id: 1, description: 'Non classé' },
{ id: 2, description: 'Non nucléaire' },
{ id: 3, description: 'Classe II irradié' },
{ id: 4, description: 'Classe III' }];
我不知道为什么,只是简单地添加了选项caption:“--Choose--”不适用于验证。我的意思是这个元素显示在我的下拉菜单中,但是验证过程不把它当作一个验证错误。
我必须明确地在我的列表中添加一个元素。然后,当在我的下拉列表中选择此元素时,它被标记为红色。最后,我通过在我的类别列表中添加一个id为空的元素使其工作:
var categories = [
{ id: '', description: '--Choose--' },
{ id: 1, description: 'Non classé' },
{ id: 2, description: 'Non nucléaire' },
{ id: 3, description: 'Classe II irradié' },
{ id: 4, description: 'Classe III' }];
我不知道为什么,只是简单地添加了选项caption:“--Choose--”不适用于验证。我的意思是这个元素显示在我的下拉菜单中,但是验证过程不把它当作一个验证错误。
我必须明确地在我的列表中添加一个元素。然后,当在我的下拉列表中选择此元素时,它被标记为红色。也偶然发现了此元素,经过一些尝试和错误后,我发现以下内容: 验证失败,因为optionsCaption使用undefined作为值 您的模型显然使用了“”(在我的示例中为null) 自空!=不知怎么的,这一切都崩溃了 了解这一点,有两种解决方案:
我也偶然发现了这一点,经过一些尝试和错误,我发现了以下几点: 验证失败,因为optionsCaption使用undefined作为值 您的模型显然使用了“”(在我的示例中为null) 自空!=不知怎么的,这一切都崩溃了 了解这一点,有两种解决方案:
当我说“清除下拉列表”时,我应该说我选择了第一项,即“选择…”,因为我的选择中有一个“选项说明:…”。在我的解决方案中,如果我选择第一个元素(即“choose…”),该元素将不会被标记为红色,我不知道为什么?当我说“清除下拉列表”时,我应该说我选择了第一个项目,即“choose…”,因为我的select中有一个“OptionCaption:…”。在我的解决方案中,如果我选择了第一个元素(即“choose…”),该元素将不会被标记为红色,我不知道为什么?谢谢您提供的信息。非常有用。还有第三种方法:onlyIf。您可以将其添加到一个required中,然后检查是否有另一个可观察对象,如“isFormSubmitted===true”或类似的内容。有时候这比担心表单有多原始容易。谢谢你提供的信息。非常有用。还有第三种方法:onlyIf。您可以将其添加到一个required中,然后检查是否有另一个可观察对象,如“isFormSubmitted===true”或类似的内容。有时候,这比担心一种形式有多原始更容易。