2

我正在使用来自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

而且我似乎仍然无法找出问题所在。

4

1 回答 1

0

我相信模型绑定器与模型上名为“图片”的属性以及名为“图片”的参数混淆了HttpPostedFileBase

如果您将HttpPostedFileBase参数更新为“图片”以外的内容,则模型绑定器应正常运行。例子:

public ActionResult Create(Dog dog, HttpPostedFileBase UploadedPicture)
于 2012-08-08T15:14:44.043 回答