扩展方法中的 HtmlAttributes

2024-04-06

我正在使用 MVC 5,并且正在尝试编写一些 Bootstrap 扩展方法。我的目标是“覆盖”Html.ActionLink方法与Html.BootstrapLinkButton. The BootstrapLinkButton方法应该生成与 css 类的链接"btn btn-default"自动附加。 到目前为止我的代码:

public static MvcHtmlString BootstrapLinkButton(this HtmlHelper htmlHelper, 
    string linkText,string actionName, string controllerName, 
    object routeValues = null, object htmlAttributes = null)
    {
        var attributes = 
            HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);

        if (attributes.ContainsKey("class"))
        {
            object value;
            attributes.TryGetValue("class", out value);
            value = (value as string) + " btn btn-default";
            attributes["class"] = value;
        }
        else
        {
            attributes["class"] = "btn btn-default";
        }

        return htmlHelper.ActionLink(
            linkText, actionName, controllerName, routeValues, 
            new Dictionary<string, object>(attributes));
    }

这在 HTML 中给出了以下结果:

<a comparer="System.Collections.Generic.GenericEqualityComparer`1[System.String]"
   count="3"
   keys="System.Collections.Generic.Dictionary`2
         +KeyCollection[System.String,System.Object]"    
   values="System.Collections.Generic.Dictionary`2
           +ValueCollection[System.String,System.Object]" 
   href="/test/test/">
     Test
</a>

我在互联网上搜索,但似乎没有什么可以解决这个问题。有谁知道解决这个问题的神奇代码?


如果我的解决方案可以帮助任何人,那就是:

    public static MvcHtmlString BootstrapLinkButton(this HtmlHelper htmlHelper, 
        string linkText, 
        string actionName, 
        string controllerName = null, 
        object routeValues = null, 
        object htmlAttributes = null,
        string btnStyle = "default")
    {
        var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
        controllerName = 
            controllerName ?? 
            HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();

        if (attributes.ContainsKey("class"))
        {
            object value;
            attributes.TryGetValue("class", out value);
            value = string.Format("{0} btn btn-{1}", (value as string), btnStyle);
            attributes["class"] = value;
        }
        else
        {
            attributes["class"] = string.Format("btn btn-{0}", btnStyle);
        }

        return htmlHelper.ActionLink(
            linkText, 
            actionName, 
            controllerName, 
            new RouteValueDictionary(routeValues), 
            new Dictionary<string, object>(attributes));
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扩展方法中的 HtmlAttributes 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

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

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • MVC 3 DataAnnotations:不允许 HTML

    无论如何 是否可以在 MVC 3 中使用 DataAnnotations 来不允许在文本框中使用 HTML 我看到了一种允许使用 HTML AllowHTMLAttribute 的方法 但是如果我不希望用户在文本框中键入任何 HTML 并且
  • iPhone - 如何使用 facebook iOS sdk 发送应用程序请求

    我正在开发一个iPhone应用程序 我需要在其中向用户发送应用程序请求 邀请和应用程序礼物 在 API 中 给出了 FB Web 应用程序的所有方法和示例 我试图模仿它们 但它们都返回 null 作为响应 请指导我如何使用 FB iOS s
  • 使用 HTML 表单编辑 MySQL 重新编码

    我正在开发一个用于学习目的的小型 PHP 项目 我想从 MySQL 数据库检索保存的数据并让用户使用 HTML 表单对其进行编辑 我能够检索数据并显示在文本框中 问题是提交表单时数据没有更新 这是我到目前为止得到的代码 文件是为了自我更新而
  • Haxe 中参数的数量可变

    我正在寻找一种在 Haxe 中做这样的事情的方法 function foo args for arg in args 这里有人可以帮助我吗 这个问题很老了 所以 我以文档的形式回答 Haxe 从 4 2 开始支持剩余参数 function
  • javascript动态更改图像src的位置 - 没有JQuery

    我有几个页面以相同的方式设置 每个页面大约有 10 到 15 张图像 如果单击它们 图像会发生变化并且变得无法单击 我为此的代码是 function ToggleOnclick elID var el document getElement
  • 如何在Python中读取文件的最后一行? [复制]

    这个问题在这里已经有答案了 我有两个要求 第一个要求 我想读取文件的最后一行并将最后一个值分配给python中的变量 第二个要求 这是我的示例文件
  • 获取 SQL Server 中的当前日期

    我进行了搜索 但无法找到获取这种格式的日期的方法 DD MM YYYY 请帮助我更改此请求 DECLARE date datetime set date 01 05 2016 SELECT User cast DATEADD SECOND
  • iOS6没有libxml2.2.7.3.dylib。有替代品吗?

    我在 xcode4 2 中创建了一个项目 当我用 xcode4 5 iOS 6 SDK 打开它时 它给出错误 255 原因似乎是缺少 libxml2 2 7 3 dylib 我有什么选择是否有其他替代品 thanks Xcode 4 5 或
  • 您最喜欢的 django 数据库迁移管理解决方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我非常喜欢Rails 的数据库迁移管理系统 它不是 100 完美 但它确实有效 Django 还没有附
  • 替换字符串中最后一次出现的单词 - C#

    我有一个问题 我需要替换字符串中最后一次出现的单词 情况 我得到了一个格式如下的字符串 string filePath F jan11 MFrame Templates feb11 然后我替换TnaName像这样 filePath file
  • Android 手机卸载后会重新启动

    我正在开发一个应用程序 当我卸载手机时会出现半重启 这是我的旧帖子 我的手机有一个奇怪的问题 我使用的是三星 GALAXY 5 GT I5500 装有 Android 2 2 未 root 我是一名 Android 开发人员 我一直在开发非
  • .NET 配置节设计器 - 我的集合在哪里?

    我正在使用配置部分设计器 http csd codeplex com 为 NET构建一个简单的ConfigurationElementCollection It appears一切都构建得很好 并且代码是自动生成的 因为子元素通过 Inte
  • 查找所有出现的子字符串(包括重叠)?

    好的 所以我发现了这个 如何查找子字符串的所有出现位置 https stackoverflow com questions 4664850 find all occurrences of a substring in python 也就是说
  • 较大的 System.IO.MemoryStream 是否会导致应用程序的内存使用量急剧增加?

    我正在构建一个库 允许用户从 URL 下载文件 我正在考虑的选项之一是让用户指定文件的预期 MD5 校验和 该库的 GetFile string url 函数可确保下载的流的校验和与用户指定的校验和相匹配 意识到 HttpWebRespon
  • 缓存具有类似内存性能的数据集并将其与数据库更改相关联的最佳方法是什么?

    有人遇到过 Net 中的开源项目或库 它们充当数据库和应用程序之间的缓存层 自动或根据请求同步数据 从而提高性能 Net 堆栈有一些可以使用的功能 例如 Sql 依赖项和缓存 但两者都有问题 经过测试的替代方案 SqlDependency
  • 如何在生产中使用 Nginx 和 Unicorn 配置 ActionCable?

    我最近将我的 Rails 项目从 Rails4 切换到 5 0 0 beta3 以使用很棒的 ActionCable 我的 ActionCable 服务器在 unicorn 内部运行 在开发中一切正常 在生产中我有 Started GET
  • jquery .show('slow') 方向?

    是否可以改变方向 selector show slow and hide slow jQuery 中的效果 我可以定义其他效果的方向 例如幻灯片和剪辑 但没有显示或剪辑选项hide slow 我无法直接回复诺曼 乔伊纳帖子上的评论 没有足够
  • 异步控制台输出

    我的应用程序 win32 控制台有问题 控制台用于向我的应用程序发出命令 然而 它同时也用于输出日志消息 这些消息主要来自异步线程 当用户尝试写入一些输入并同时打印异步日志消息时 这会成为问题 从而影响用户输入的显示 我想就如何处理这种情况
  • 在angularjs中如何装饰$stateProvider Provider?

    这种类型的装饰器适用于services和工厂 我希望它也能与提供商合作 我尝试过以下装饰用户界面路由器 s stateProvider app config function provide provide decorator state
  • 扩展方法中的 HtmlAttributes

    我正在使用 MVC 5 并且正在尝试编写一些 Bootstrap 扩展方法 我的目标是 覆盖 Html ActionLink方法与Html BootstrapLinkButton The BootstrapLinkButton方法应该生成与