我正在使用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
我似乎无法找出问题所在。
答案 0 :(得分:0)
我认为模型绑定器与模型上名为“Picture”的属性以及名为“Picture”的HttpPostedFileBase
参数混淆。
如果您将HttpPostedFileBase
参数更新为“图片”以外的其他参数,则模型活页夹应该正常运行。示例:
public ActionResult Create(Dog dog, HttpPostedFileBase UploadedPicture)