数据注释和输入[文件]

时间:2014-09-18 08:57:21

标签: asp.net-mvc-5 unobtrusive-validation

我有一个带有数据注释属性的视图模型

public class vm{
[Required(AllowEmptyStrings=false,ErrorMessage="message 1")]
        public string Name { set; get; }

        [RegularExpression("([0-9]+)", ErrorMessage = "message 2")]
        public int Period { set; get; }

[Required(ErrorMessage = "message 3")]
        [RegularExpression(@"^(\.xls|\.xlsx)$", 
            ErrorMessage = "message 3")]
        public string Extension { set; get; }
}

“期间”字段受限于下拉列表,使用此字段,内置客户端验证可以正常工作。

@Html.DropDownListFor(x => x.Period, Model.Periods, new { @class = "form-control", name = "period" })

我可以通过ValidationSummary或​​ValidationMessageFor获取错误消息。

现在我的问题是扩展名和名称字段。它们由我提交的文件中的自定义活页夹填充。

 <input type="file" name="file" />

如何将这两个字段手动绑定到jquery unobstrusive客户端验证可以工作的输入文件标记?

更新

刚才我发现如何使用内置帮助器生成输入[file]:

@Html.TextBoxFor(x => x.Extension, new { type = "file" }) 

但现在的问题是,如何将第二个字段绑定到它呢? 我只想将一个输入绑定到视图模型中的两个字段。我怎样才能做到这一点? 即使使用隐藏字段,它似乎也不起作用:

@Html.HiddenFor(x=>x.Name)

1 个答案:

答案 0 :(得分:0)

我想我明白了。 它使用隐藏字段的解决方案,但必须将validate插件配置为不忽略它们。

@Html.HiddenFor(x=>x.Name)

和脚本

$('form').validate().settings.ignore = [];

如果有更好的方法,我希望看到它。