数据注释扩展MV3 ModelState无效

时间:2012-08-04 21:21:03

标签: asp.net-mvc-3 data-annotations

我正在使用http://dataannotationsextensions.org/

中的DataAnnotationsExtensions

http://weblogs.asp.net/srkirkland/archive/2011/02/23/introducing-data-annotations-extensions.aspx

为例

控制器代码

    public ActionResult Create(Dog dog, HttpPostedFileBase Picture)
    {
        Regex rgx = new Regex(@"^.*\.(jpg|gif|jpeg|png)$");
        Match m = rgx.Match(Picture.FileName);

        if (rgx.IsMatch(Picture.FileName))
            {
                if (ModelState.IsValid)
                {

型号代码

[FileExtensions("png|jpg|jpeg|gif", ErrorMessage = "Only jpg jpeg gif or png files allowed")]
        public string Picture { get; set; }

和剃刀代码

@Html.TextBoxFor(model => model.Picture, new { type = "file" })
@Html.ValidationMessageFor(model => model.Picture)

我每次做的每件事都失败了

if (ModelState.IsValid)

如果我删除FileExtensions Annotation它工作正常,但我不再能够阻止我不想要的文件类型。

我已经检查了这里的数据注释扩展的代码 https://github.com/srkirkland/DataAnnotationsExtensions/blob/master/DataAnnotationsExtensions/FileExtensionsAttribute.cs

我似乎无法找出问题所在。

1 个答案:

答案 0 :(得分:0)

我认为模型绑定器与模型上名为“Picture”的属性以及名为“Picture”的HttpPostedFileBase参数混淆。

如果您将HttpPostedFileBase参数更新为“图片”以外的其他参数,则模型活页夹应该正常运行。示例:

public ActionResult Create(Dog dog, HttpPostedFileBase UploadedPicture)