CustomAttribute反映html属性MVC5

2024-03-13

希望找到一种方法,当在 MVC5 中使用 Custom 属性或最好使用 RegularExpressionAttribute 装饰模型中的属性时,html 控件将包含它作为控件的另一个属性。例如。

class CoolModel {
   [CustomHtmlAttribute("hello")]
   public string CoolValue {get;set;} 
}

输出...

<input type="text" customhtml="hello" />

或类似的东西。因此对于 RegularExpressionAttribute 来说,pattern 属性会很棒。

class CoolModel {
   [RegularExpressionAttribute("/d")]
   public string CoolValue {get;set;} 
}

输出...

<input type="text" pattern="/d" />

我需要此输出而不启用 Javascript 不显眼选项。因此,我正在考虑以某种方式指定模型中的某些属性,并将其下推到视图。不确定数据注释提供者是否可以完成这项工作。不确定是否可以扩展 Helper 以获得此结果。

感谢帮助。


如果使用带有重载的标准助手来添加 html 属性是不可接受的,那么您可以创建一个属性实现IMetadataAware将属性添加到metadata.AdditionalValues然后可以在自定义 html 帮助程序中使用它。一个简单的例子可能是

[AttributeUsage(AttributeTargets.Property)]
public class CustomHtmlAttribute : Attribute, IMetadataAware
{
  public static string ValueKey
  {
    get { return "Value"; }
  }
  public string Value { get; set; }
  public void OnMetadataCreated(ModelMetadata metadata)
  {
    if (Value != null)
    {
      metadata.AdditionalValues[ValueKey] = Value;
    }
  }
}

并创建一个助手来渲染文本框(此处仅显示一个重载)

public static MvcHtmlString CustomHtmlTextBoxFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression)
{
  ModelMetadata metaData = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
  object attributes = null;
  if (metaData.AdditionalValues.ContainsKey(ValueKey))
  {
    attributes = new { customhtml = (string)metaData.AdditionalValues[ValueKey] };
  }
  return InputExtensions.TextBoxFor(helper, expression, attributes);
}

并将其用作

[CustomHtml(Value = "hello")]
public string CoolValue { get; set; } 

并在视图中

@Html.CustomHtmlTextBoxFor(m => m.CoolValue)

为了使其更加灵活,您可以向属性添加更多属性,以便可以将其应用为

[CustomHtml(Value = "hello", Pattern="/d")]
public string CoolValue { get; set; }

并修改助手以呈现您定义的所有 html 属性。

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

CustomAttribute反映html属性MVC5 的相关文章

  • C# 中一次性对象克隆会导致内存泄漏吗?

    检查这个代码 class someclass IDisposable private Bitmap imageObject public void ImageCrop int X int Y int W int H imageObject
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • 为什么这个 makefile 在“make clean”上执行目标

    这是我当前的 makefile CXX g CXXFLAGS Wall O3 LDFLAGS TARGET testcpp SRCS main cpp object cpp foo cpp OBJS SRCS cpp o DEPS SRCS
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 来自嵌入图像的 BitmapSource

    我的目标是在 WPF 窗口上重写 OnRender 方法中绘制图像 someImage png 它是嵌入资源 protected override void OnRender System Windows Media DrawingCont
  • 条件类型定义

    如果我有一小段这样的代码 template
  • C# 获取数据表中所有重复行的计数

    我通过运行存储过程来填充数据集 并且从数据集中填充数据表 DataSet RawDataSet DataAccessHelper RunProcedure storedprocedureName this will just return
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 对于 C# Express 用户来说,有哪些好的工具可以识别可能重复的代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 也可以看看 有什么工具可以检查重复的 VB NET 代码吗 https stackoverflow c
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何组合两个 lambda [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中组合两个 lambda 表达式 https stackoverflow com questions 1717444 combining two lamba expressions in c
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调

随机推荐

  • 什么时候应该将任务视为“长时间运行”?

    在处理任务时 经验法则似乎是线程池 通常由例如调用Task Run or Parallel Invoke 应该用于相对较短运营 当处理长时间运行的操作时 我们应该使用TaskCreationOptions LongRunning标志是为了
  • 在 VS2015 中调试运行单元测试时出现 DisconnectedContext 错误

    我在 VS2015 Enterprise 中运行单元测试时遇到这个问题 每当我在调试模式下运行任何单元测试时 都会收到以下错误 托管调试助手 DisconnectedContext 在 my path to VS COMMON7 IDE C
  • 将 dash_html_components 传递到 Jinja 模板中

    我正在使用 Python 库 Dash 文档声称它不支持使用仪表板 html 代码编写原始 html 的功能 是否有已知的解决方法 例如传递dcc Graph into render template 与烧瓶 我想要迁移到 Jinja 模板
  • PHP 浮动错误:PHP 挂在数值上

    我刚刚读了一篇关于 php 挂在某些浮点数上的有趣文章 请参阅登记册 http www theregister co uk 2011 01 04 weird php dos vuln and 探索二进制 http www exploring
  • “iddata”类型的输入参数未定义函数“minus”

    这是后续我之前遇到的一个问题 https stackoverflow com questions 45688607 我想给信号一个偏移量 然后在其中添加一些延迟并计算 RMSE 但是在求差时我遇到以下问题 我想请教以下问题 我该如何解决上述
  • MailKit OAuth2.0 身份验证失败异常

    我使用以下代码来获取访问令牌并连接到邮件文件夹 var confidentialClientApplicationBuilder ConfidentialClientApplicationBuilder Create clientId Wi
  • 将 Scrapy 与经过身份验证(登录)的用户会话一起使用

    In the Scrapy 文档 https doc scrapy org en latest topics request response html using formrequest from response to simulate
  • 将表空间从一个 postgresql 实例复制到另一个实例

    我正在寻找一种方法来快速将数据库从一台 postgresql 服务器 克隆 到另一台服务器 假设 我有一个在 HostA 上运行的 postgresql 服务器 为 2 个数据库提供服务 我在 HostA 上安装了 2 个设备 每个设备存储
  • 帮助解决我的应用程序崩溃的原因?

    我正在编写一个 iPad 应用程序 它是一个 信息亭 应用程序 iPad 应该挂在墙上 并且应用程序应该可以运行 我做了一个测试 昨晚 12 月 31 日星期五 启动了应用程序并让它运行 今天早上 当我醒来时 它没有运行 我刚刚检查了 iP
  • 如何在保留颜色的同时将 Mat 对象转换为位图?

    在我正在开发的应用程序中 我使用打开相机OpenCV4Android using CameraBridgeViewBase CvCameraViewListener2当我触摸屏幕时 我将该框架设置为内部的图像ImageView如下代码所示
  • 检测用户退出站点

    我迫切希望检测用户何时离开我的网站 以便准确记录相关用户的会话长度 我想到了几个可能的解决方案 我首先想到我可以使用 onbeforeunload 并发送一个简单的 ajax 来记录最后一个活动 但实践告诉我 onbeforeunload
  • 为什么 x64 项目使用默认的打包对齐方式 16?

    如果您在 VS2012 的 x64 项目中编译以下代码而不使用任何 Zp 标志 pragma pack show 然后编译器会吐出 value of pragma pack show 16 如果项目使用Win32 编译器会输出 value
  • 如何让 Google 表格脚本在特定单元格的值发生变化时发送电子邮件?

    我正在尝试为我的 Google 表格设置一个脚本 该脚本将在特定单元格的值发生更改时发送电子邮件 我还想知道是否有办法设置脚本 使其每天只发送一次 例如 如果一天进行多次更改 我宁愿它在一天结束时只发送一封电子邮件 而不是每次都发送一封电子
  • 我如何从android中的php服务器获取这个json数据

    我如何在android中获取这个json数据 该数据位于本地主机中 我必须使用 URL 获取此数据并在 android 的列表视图中显示 任何人都可以帮助编码吗 id 111114 name Prandar id 111115 name C
  • 将 C# 函数指针传递到 C++/CLI 互操作 dll

    我试图将函数指针从 C 传递到 C CLI 并收到一个 Windows 编译器错误 指出ManagedTakeCallback该语言 C 不支持函数 我定义了ManagedTakeCallback在 C CLI 互操作中 我的代码看起来像
  • 将 ASP.NET 行添加到 ListBox

    我需要在 ASP NET 中的列表框中添加一行 以便与用户可以选择的许多选项进行一定的分离 目前 我们有超过 20 个不同的选项供用户选择 我需要将最受欢迎的放在最上面 我的逻辑是将流行的选项放在顶部 但认为列表框中的一行将帮助用户将它们与
  • 无法使用 Selenium WebDriver 在 Chrome 中加载默认配置文件

    我正在使用 Selenium WebDriver 在需要 http 身份验证的页面上执行某些操作 我已经登录我的默认配置文件 但 selenium chromedriver 会自动为每次使用使用新的配置文件 因此我无法通过身份验证阶段 因此
  • libcurl 回调 w/c++ 类成员

    取自libcurl 编程教程 http curl haxx se libcurl c libcurl tutorial html在 libcurl 网站上 libcurl 与 C 使用 C 时基本上只需要记住一件事 在连接 libcurl
  • 未注入通过 RequireJS 从 CDN 加载 Angular

    在我的项目中 我想使用 RequireJS 并引导我的应用程序 如下所示 requirejs config baseUrl scripts vendor paths jquery https ajax googleapis com ajax
  • CustomAttribute反映html属性MVC5

    希望找到一种方法 当在 MVC5 中使用 Custom 属性或最好使用 RegularExpressionAttribute 装饰模型中的属性时 html 控件将包含它作为控件的另一个属性 例如 class CoolModel Custom