扩展方法中的 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 的相关文章

  • Web UI 中的 .Result 出现死锁

    我正在阅读以下主题http blog stephencleary com 2012 07 dont block on async code html http blog stephencleary com 2012 07 dont bloc
  • 实体框架代码优先 - 在另一个文件中配置

    使用 Fluent API 将表到实体的映射分开的最佳方法是什么 以便它全部位于单独的类中 而不是内联在 OnModelCreating 方法中 我目前在做什么 public class FooContext DbContext prote
  • 有没有比这更快的方法来查找目录和所有子目录中的所有文件?

    我正在编写一个程序 需要在目录及其所有子目录中搜索具有特定扩展名的文件 这将在本地驱动器和网络驱动器上使用 因此性能是一个问题 这是我现在使用的递归方法 private void GetFileList string fileSearchP
  • 浮点提升:stroustrup vs 编译器 - 谁是对的?

    在 Stroustrup 的新书 C 编程语言 第四版 第 10 5 1 节中 他说 在执行算术运算之前 整数提升用于从较短的整数类型创建整数 类似地 浮点提升是用于从浮点数创建双精度数 我用以下代码确认了第一个声明 include
  • Linq Where 本地计数器关闭在 VS watch 中的结果不同

    我尝试删除前 3 个元素array与 LinQWhere扩展功能 这是一个例子 var array new 1 2 3 4 5 6 7 8 9 var count 3 var deletedTest1 0 var test1 array W
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • C++ 在 Vector 中使用不可分配的对象

    我想将对象列表存储在std vector 但对象包含引用且无法分配给 但是 我可以复制构造该对象 我能想到的唯一选择是使用指针来包装对象并在需要分配指针时重新设置指针 但这样做的语法会显着降低可读性 特别是在使用迭代器时 我更喜欢另一种选择
  • 控制台应用程序 .net Core 2.0 的配置

    在 net Core 1 中我们可以这样做 IConfiguration config new ConfigurationBuilder AddJsonFile appsettings json true true Build 这样就可以使
  • C中有const吗?

    这个问题可能很幼稚 但是 有没有constC 中的关键字 从哪个版本开始 之间有任何语义和 或句法差异吗const在 C 和 C 中 C 和 C 之间在语法上没有差异const关键字 除了一个相当晦涩的关键字 在 C 中 自 C99 起 您
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • for 循环 - 没有效果的语句

    由于某种原因 我收到错误 statement with no effect关于这个声明 for j idx j lt iter j increment printf from loop idx i int idx punc ctxt j 你
  • 当格式字符串包含“{”时,String.Format 异常

    我正在使用 VSTS 2008 C Net 2 0 执行以下语句时 String Format 语句抛出 FormatException 有什么想法是错误的吗 这是获取我正在使用的 template html 的位置 我想在 templat
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • 抽象类和接口之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 接口与基类 https stackoverflow com questions 56867 interface vs base class 我不明白抽象类和接口之间的区别 我什么时候需要使用哪种字体
  • 标准 C 中的 sizeof 与 sizeof()? [复制]

    这个问题在这里已经有答案了 我看到一些直接使用 sizeof 的代码 想知道它是否是标准 C 令我惊讶的是 它运行得很好 这是一个例子 include
  • 使用 AutoMapper 进行 LINQ GroupBy 聚合

    试图让查询工作 但老实说不确定如何 或者是否可能 进行它 因为我尝试过的一切都不起作用 共查询6个表 Person PersonVote PersonCategory Category City FirstAdminDivision Per
  • 编写专门用于类及其子类的函数模板

    我正在尝试编写一个函数模板 一个版本应该用于不满足另一版本标准的所有类型 当参数是给定类的基类或该类本身时 应使用另一个版本 我尝试过超载Base 但是当类派生自Base 他们使用通用的 而不是特定的 我也尝试过这种 SFINAE 方法 s
  • C# ToString("MM/dd/yy") 删除前导 0 [重复]

    这个问题在这里已经有答案了 可能的重复 格式化 NET DateTime Day 不带前导零 https stackoverflow com questions 988353 format net datetime day with no
  • ASP.NET Core:会话 ID 始终变化

    今天启动了一个全新的 ASP NET Core 网站 按照说明添加会话 我们在索引页上打印出会话 ID 它始终是唯一的 我认为这可能是 cookie 合规性 所以我在 Chrome 的高级设置和调试器中删除了所有 cookie 但横幅不会再

随机推荐

  • 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方法应该生成与