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 的相关文章

  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • IsReusable 属性中的上下文切换

    是否可重用属性 下面是我的理解IsReusable财产 如果处理程序返回静态内容 将值设置为 true 是安全的 但如果线程返回动态内容 为了使其线程安全 IsReusable应设置为 false 在这种情况下 可能会发生上下文切换 这可能
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 使用 CSS 折叠和展开元素

    我正在尝试构建一个页面 加载时仅可见标题 并且 当用户单击标题时 每个标题下方的表格会在隐藏和显示状态之间切换 我的限制是只能在 CSS 中执行此操作 这是我到目前为止想到的 https jsfiddle net Argoron c1ypx
  • 从 PHP 数组生成 HTML 表

    我不明白这一点 我需要解决看似简单的问题 但这超出了我的逻辑 我需要编写一个函数 table columns input cols 它将输出一个表 示例 input array apple orange monkey potato chee
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 禁用允许文本选择的

    残疾人可以吗

随机推荐

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

    在处理任务时 经验法则似乎是线程池 通常由例如调用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