DataAnnotation 正则表达式对于文件输入始终返回 false

2024-02-13

我已经尝试了很多正则表达式RegularExpression数据注释来检查文件扩展名是否是图像,并且它总是返回 false,例如我也尝试过FileExtension属性,但它会在 jquery.validation 上产生错误。我正在使用 ASP.NET MVC 4 Razor

[RegularExpression(@"^.*\.(jpg|gif|jpeg|png|bmp)$", 
ErrorMessage = "Please use an image with an extension of .jpg, .png, .gif, .bmp")]
public string MyImage { get; set; }

这是我的标记

    <div class="editor-field">            
        @Html.TextBoxFor(x => x.DepartmentImage, new { type = "file" })            
        @Html.ValidationMessage("DepartmentImageError")
        @Html.ValidationMessageFor(model => model.DepartmentImage)
    </div>

有人可以告诉我如何让它发挥作用吗?


尝试修改如下代码。

@Html.ValidationMessageFor(model => model.MyImage)

我的建议

您的表格应如下所示。

@using (Html.BeginForm("Acion", "Conroller", FormMethod.Post, 
                                      new { enctype = "multipart/form-data" }))
{
    <input type="file" name="FileInfo" value="File to Upload" />
    @Html.ValidationMessageFor(I => I.FileInfo);
    <button type="submit" name="Upload" value="Upload" />
}

HttpPostedFileBaseModelBinder

*当您有一个实例时HttpPostedFileBase作为模型中的操作参数或属性,然后映射文件完全由HttpPostedFileBaseModelBinder并且在这种情况下不使用任何价值提供者。您可能会想为什么在这种情况下没有使用值提供者,这是因为源是单一且清晰的,即 Request.Files 集合。*

Model

public class UploadFileModel
{
    [FileSize(10240)]
    [FileTypes("jpg,jpeg,png")]
    public HttpPostedFileBase FileInfo { get; set; }
}

文件大小属性

public class FileSizeAttribute : ValidationAttribute
{
    private readonly int _maxSize;

    public FileSizeAttribute(int maxSize)
    {
        _maxSize = maxSize;
    }

    public override bool IsValid(object value)
    {
        if (value == null) return true;

        return _maxSize > (value as HttpPostedFileBase).ContentLength;
    }

    public override string FormatErrorMessage(string name)
    {
        return string.Format("The file size should not exceed {0}", _maxSize);
    }
}

文件类型属性

public class FileTypesAttribute: ValidationAttribute
{
    private readonly List<string> _types;

    public FileTypesAttribute(string types)
    {
        _types = types.Split(',').ToList();
    }

    public override bool IsValid(object value)
    {
        if (value == null) return true;

        var fileExt = System.IO
                            .Path
                            .GetExtension((value as
                                     HttpPostedFileBase).FileName).Substring(1);
        return _types.Contains(fileExt, StringComparer.OrdinalIgnoreCase);
    }

    public override string FormatErrorMessage(string name)
    {
        return string.Format("Invalid file type. Only the following types {0} 
                                    are supported.", String.Join(", ", _types));
    }
}

控制器动作方法

[HttpPost]
public ActionResult Upload(UploadFileModel fileModel)
{     
    if(ModelState.IsValid)
    {

    }

    return View(fileModel);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DataAnnotation 正则表达式对于文件输入始终返回 false 的相关文章

  • MVC5 身份验证中“...与主域之间的信任关系失败”

    我有一个 ASP NET MVC5 应用程序not使用 Windows 身份验证 一切都工作正常 直到我尝试在正在开发的域之外运行应用程序并且 无论出于何种原因 得到 The trust relationship between this
  • 需要帮助理解这段代码

    我正在尝试学习单元测试 我正在尝试对我在 asp net mvc 1 0 中制作的一些会员资格内容进行单元测试 我一直在关注一本关于 MVC 的书 我对一些东西感到困惑 希望有人能为我解答 我的框架使用 Nunit 和 Moq 问题一 pu
  • 如何在单击 Html.ActionLink 时加载部分视图?

    有人可以告诉我如何加载吗PartialView单击时在同一页面中Html ActionLink 我在下面列出了我的要求 我有一个索引页面 它将列出 员工 表中的员工 表中的每一行还将有 编辑和删除 链接 Html ActionLink 来更
  • 适用于移动应用程序的 REST API 上的 OAuth

    我正在开发移动应用程序的后端 使用 ASP NET MVC 4 Web Api 构建 RESTful API 该应用程序将在 iOS 和 Android 上运行 我的用户将只能使用他们的 Facebook 帐户登录 并且只有登录后 他们才能
  • Html.Display对于十进制格式?

    例如 我有一个十进制值 59625879 00 我想这样显示这个值 59 625 879 or 59625 879 我怎样才能做到这一点 Html DisplayFor x gt x TAll String Format Thanks 装饰
  • 如何将 Ajax.BeginForm MVC 助手与 JSON 结果一起使用?

    我正在尝试使用 ASP NET MVC Ajax BeginForm 帮助程序 但不想在调用完成时使用现有的内容插入选项 相反 我想使用自定义 JavaScript 函数作为回调 这可行 但我想要的结果应该以 JSON 形式返回 不幸的是
  • SQL Server中主键和唯一索引的区别[重复]

    这个问题在这里已经有答案了 我的公司目前正在重写我们最近获得的一个应用程序 我们选择使用 ASP net mvc4 来构建这个系统 并使用实体框架作为我们的 ORM 我们收购的公司的前任所有者非常坚定地要求我们使用他们的旧数据库 并且不对其
  • 使用 MVC3 根据 Highchart 条形图中的值更改条形颜色

    我正在使用 Dotnet Highchart 和 MVC3 我目前正在使用一个如下所示的图表 我正在尝试修改我的代码 以便我可以根据条形的数量更改条形的颜色 我还想知道如何删除按钮 Snittbetyg 正如您在图像上看到的那样 这是我的代
  • 如何将包含动态内容的捆绑包添加到 ASP.NET Web 优化

    我正在使用 SignalR 它映射到虚拟路径 signalr 上的 asp net 应用程序 SignalR 在应用程序上动态创建 JavaScript 代理集线器 以虚拟路径 signalr hubs 开始 所以网址 http myapp
  • App_Web_XXX.dll 中发生 System.NullReference 异常 - 部分视图中出现错误

    当登陆我的 MVC 页面之一时 我收到此错误 dll 名称中包含随机字符串 类型的第一次机会异常系统 NullReferenceException发生在 App Web cjmhrrqn dll 中 附加信息 未将对象引用设置为对象的实例
  • 我可以在 ASP.NET MVC 中使用 [CompressFilter] 而不破坏甜甜圈缓存吗

    我正在努力获得 压缩过滤器 http www thegrubbsian com p 202 使用甜甜圈缓存并遇到问题 发生的情况是整个页面都被缓存 而不仅仅是甜甜圈 的来源CompressFilter我正在使用的是下面的 我从原始来源 ht
  • 在 ASP.NET MVC 中使用或继承 DisplayAttribute 创建自定义显示属性

    我想用DisplayAttribute with Name财产 问题是班级是sealed我无法继承它来覆盖某些方法 为什么我想要这个 我想传递一些代码以便将字符串转换为Name财产 并为语言添加一个属性 就像是 MyDisplay Code
  • 当视图模型类型为包含超过 4 个项目的元组时,Asp.net mvc 2 .net 4.0 出现错误

    当我在 Asp net mvc 2 net 4 0 中使用模型类型 Tuple 创建强类型视图时 当 Tuple 具有超过 4 个项目时 我会收到错误 示例1 视图类型是Tuple
  • ASP.NET 视图中的区域?

    我正在使用 razor 引擎制作 ASP NET MVC 应用程序 我想知道是否可以使用Regions http msdn microsoft com en us library 9a1ybwek aspx在一个视图中 就像是 region
  • 如何制作像Stackoverflow一样的可折叠评论框

    我正在构建一个网站 并且有一个状态更新列表 我希望允许用户为列表中的每个项目撰写评论 但是我正在尝试实现一个类似于堆栈溢出工作方式的用户界面 特别是可折叠的评论表单 列表 用户在其中单击对列表中的特定状态更新添加评论 并且在列表中的该项目下
  • ASP.NET MVC - 临时要求除一页之外的整个站点授权的简单方法

    我正在建立一个混合了公共页面和会员专用页面的网站 登录系统按原样工作正常 不过 我想启动一个封闭的 仅限邀请的预览 并暂时要求访问者登录才能执行除欢迎页面之外的所有操作 目前我有 Authorize 某些操作方法的属性 我也可以向其他操作方
  • MVC4 - ContextDependentView - 是什么意思?

    我刚刚开始使用 MVC4 我看到的第一个操作方法有一些新内容 我查了一下互联网 找不到任何关于此的信息 public ActionResult LogOn return ContextDependentView 有谁知道 ContextDe
  • 盒式捆绑包与 MVC4 捆绑包

    我目前正在开发一个原型 ASP NET MVC 3 解决方案 该解决方案将用作多个项目重写的基础 来自 Web 表单 我的目标之一是跨应用程序实现一些脚本管理 而不是我们目前没有的目标 MVC 3有一个缺陷恕我直言 如果您需要在部分视图或模
  • 重定向到其他控制器中的操作

    我想从一个控制器中的操作重定向到第二个控制器中的操作 通常我会使用 RedirectToAction actionName controllerName objects 我想要重定向到的方法有两个重载 一个用于 HttpVerbs Get
  • 在 MVC4 中使函数异步时 HttpContext.Current null

    我目前正在 VS2010 SP1 中开发 MVC4 我做了其中一个功能 控制器类异步 作为其中的一部分 我制作了控制器类 派生自 AsyncController 并添加了以下两个方法 参见代码部分 1 和 2 下 一种以 Async 结尾的

随机推荐

  • 当我在 Grails 上调用 Post 方法时,params 为空

    我正在为我的应用程序编写网络服务 我的问题是 当我使用 GET 方法调用它时 它可以工作 但是当我使用 POST 方法时 params 不包含我的参数 当我使用 GET 调用时 这是 params 的内容 params username a
  • 如何重置 jquery 动画以重新开始?

    我已经构建了一段不错的代码 一些动画和一些单击 悬停事件 其中只有一小行 我打算在多个 html 文档上使用它 这是一个游戏 你必须得到正确的答案并继续下一个问题 用全页滑块构建在另一个 html 中 我不想加载 DOM 多个次 毫无意义
  • Java流减少

    我有以下示例数据集 我想使用基于方向值的 Java 流 api 对其进行转换 减少 Direction int IN 1 2 OUT 3 4 OUT 5 6 7 IN 8 IN 9 IN 10 11 OUT 12 13 IN 14 to D
  • 改造@GET - 如何显示请求字符串?

    我正在开发一个 Android 应用程序 它使用 Retrofit 创建一个安静的客户端 为了调试网络调用 我想显示或转储实际被调用的 url 有没有办法做到这一点 我在下面添加了一些代码 显示了应用程序当前如何使用改造 客户端接口定义 i
  • 如何在不停止 JVM 的情况下将 Javaagent 添加到 JVM?

    我希望在不停止应用程序的情况下分析 Java 应用程序 我可以在应用程序运行时以某种方式添加 Javaagent 吗 See 程序启动后启动Java代理 https stackoverflow com questions 1277219 s
  • JSON.NET:从 JProperty 值获取 JObject

    我被困在某件事上 我使用 JObject Load 反序列化了一个 JSON 文件 get the JSON into an object JObject jsonObject JObject Load new JsonTextReader
  • 运行不带参数或任务名称的 CLI Thor 应用程序

    我正在寻找一种方法来创建一个命令行雷神应用程序 该应用程序将运行不带任何参数的默认方法 我摆弄了 Thor 的 default method 选项 但仍然要求我传递一个参数 我找到了一个类似案例 https stackoverflow co
  • 计算文本区域字符数

    我正在为我的文本区域开发字符计数website http ilanshomekitchen x10 mx new contact html 现在显示NaN 因为它似乎没有找到该字段中有多少个字符的长度 该字段一开始是0 所以数字应该是500
  • NHibernate (+ FluentNhibernate) : 连接两个独立的表

    我在创建具有共同属性的两个实体的联接时遇到问题 但它们没有映射在一起 假设您有一个实体 Article 其中包含属性 FamilyCode 和一个具有属性 Code 和 Label 的实体 Family 在我的映射中 Article 没有引
  • 如何“深度”克隆闭源第三方类的属性?

    The ICloneable http msdn microsoft com en us library system icloneable v vs 100 aspx NET框架的接口通常提供一种方法来支持cloning http en
  • 当特定部分出现在屏幕上时切换类[重复]

    这个问题在这里已经有答案了 我正在制作一个大滚动页 我的导航是固定位置的 当导航到达我页面上的特定部分时 我想更改导航上的颜色 从黑色到白色 反之亦然 因为有些是白色的 有些是黑色的 我想做一个对比 我已经在 css 中创建了一个应该切换的
  • Chef 客户和验证者

    我试图理解 Chef 客户端和验证器的概念 以及它们与引导过程的关系 根据本文 http docs opscode com server manage clients html 厨师 客户将使用 etc chef validation pe
  • 为什么 isNaN('') 或 isNaN("") 为 false(单引号或双引号被视为有效数字)?

    我需要一个内置函数来检查变量是否包含 Javascript 中的有效数字 如下这个链接 https stackoverflow com questions 175739 built in way in javascript to check
  • TabLayout重心不起作用

    我有一个 TabLayout 我希望选项卡显示在屏幕中央 下面是我的 TabLayout 的 XML
  • 如何在 gulp 任务中运行 shell 命令并检测它何时完成?

    我正在尝试使用以下命令在 gulp 任务中运行 shell 命令child process spawn 我必须检测任务何时完成运行 所以我正在使用stdout检查我在命令末尾发出的特定字符串 但由于某种原因 它看起来不像我的字符串正在发出
  • 如何在 XSLT 中调用点网程序集/命名空间

    我正在 XSLT 中编写点网代码 当我调用任何名称空间或在 XSLT 中写入 using 指令时 它会给出以下错误 错误 无法识别 com myassemble 是否可以在 xslt 中使用任何程序集 这是可能的 并且您需要使用扩展对象 h
  • TCPDF 将底部边距设置为零

    我正在 php 中使用 TCPDF 创建 pdf 我需要将我的数据包含到没有下边距的 pdf 中 数据将包含在页面末尾 pdf gt SetLeftMargin 14 pdf gt SetTopMargin 6 pdf gt SetFont
  • super() 和显式 super(Cl,self) (带有 __slots__ 和 attrs)有什么区别

    我正在使用attrspython 包 结合继承和槽 我想从派生方法中调用父类的方法 该问题演示如下 import attr attr s slots True class Base def meth self print hello att
  • javascript:获取函数中传递的实际参数的名称

    我们能知道函数中传递的实际参数的名称吗 喜欢 func a b c d 当我们调用它时 我希望在输出中打印 a b c d 就像我将 func 定义为 function func e f g h do something here so t
  • DataAnnotation 正则表达式对于文件输入始终返回 false

    我已经尝试了很多正则表达式RegularExpression数据注释来检查文件扩展名是否是图像 并且它总是返回 false 例如我也尝试过FileExtension属性 但它会在 jquery validation 上产生错误 我正在使用