使用 htmlAttributes 正确制作 ActionLink 扩展

2024-04-25

我为我的 ActionLink 使用自定义扩展。我添加了一个属性data_url这意味着被翻译成一个属性data-url。即用破折号替换下划线。

这是使用我的自定义扩展的链接 1:

@Ajax.ActionLink("Add", MyRoutes.GetAdd(), new AjaxOptions()
    , new { data_url = Url.Action(...)})

Result: data_url

这是使用 ActionLink 框架的链接 2:

@Ajax.ActionLink("Add 2", "x", "x", null, new AjaxOptions()
    , new { data_url = Url.Action(...) })

Result: data-url

这是扩展,很简单,除了我所知道的传递 htmlAttributes 的唯一方法是使用ToDictionaryR()扩大。我怀疑这就是问题所在,所以我想知道是否应该使用其他东西。我也在下面提供了该扩展。

public static MvcHtmlString ActionLink(this AjaxHelper helper, string linkText
        , RouteValueDictionary routeValues, AjaxOptions ajaxOptions
        , object htmlAttributes = null)
{
    return helper.ActionLink(linkText, routeValues["Action"].ToString()
        , routeValues["Controller"].ToString(), routeValues, ajaxOptions
        , (htmlAttributes == null ? null : htmlAttributes.ToDictionaryR()));
}

public static IDictionary<string, object> ToDictionaryR(this object obj)
{
    return TurnObjectIntoDictionary(obj);
}
public static IDictionary<string, object> TurnObjectIntoDictionary(object data)
{
    var attr = BindingFlags.Public | BindingFlags.Instance;
    var dict = new Dictionary<string, object>();
    foreach (var property in data.GetType().GetProperties(attr))
    {
        if (property.CanRead)
        {
            dict.Add(property.Name, property.GetValue(data, null));
        }
    }
    return dict;
}

谢谢


你可以使用匿名对象到 Html 属性 http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper.anonymousobjecttohtmlattributes.aspx方法完全符合您的要求,并且不需要任何自定义扩展方法:

public static MvcHtmlString ActionLink(
    this AjaxHelper helper, 
    string linkText, 
    RouteValueDictionary routeValues, 
    AjaxOptions ajaxOptions, 
    object htmlAttributes = null
)
{
    return helper.ActionLink(
        linkText,    
        routeValues["Action"].ToString(), 
        routeValues["Controller"].ToString(), 
        routeValues, 
        ajaxOptions, 
        htmlAttributes == null ? null : HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)
    );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 htmlAttributes 正确制作 ActionLink 扩展 的相关文章

随机推荐

  • 具有可选小数点的十进制数的正则表达式

    我的要求是测试粘贴的数据 如果失败则不要粘贴 Regex d 0 4 d 0 2 使用的数据 1 2 tests true 1 2 3 test true as well 要求是 小数点前最小 0 最大 4 位小数点可以是点或逗号如果有小数
  • 判断一个数是否是质数

    我已经仔细阅读了有关该主题的大量代码 但大多数代码生成的数字一直到输入数字都是素数 但是 我需要的代码仅检查给定的输入数字是否为素数 这是我能够写的 但它不起作用 void primenumber int number if number
  • 如何从 Uri 中修剪视频,包括“mp4parser”库可以处理的文件,但使用 Android 框架?

    背景 在过去的几天里 我一直致力于制作一个可定制的 更新版本的视频剪辑库 here https github com AndroidDeveloperLB VideoTrimmer 基于这个图书馆 https github com tita
  • 无法解析程序集 Model.dll

    我有一个使用实体框架的类库项目 它工作得很好 直到我将模型移到一个单独的类库类型项目中 将模型移至名为 Model 的单独类库项目后 我将 app web config 中的连接字符串更改为如下所示
  • 检测互联网连接并显示 UIAlertview Swift 3

    我正在制作一个应用程序 通过使用 if else 语句来检测是否有互联网连接 当有互联网时 不执行任何操作 但如果没有互联网连接 则警报视图说该应用程序需要我管理的互联网 但发现可达性在我的 viewDidLoad 上实现 uialertv
  • Android 实现具有 hashmap 的 Parcelable 对象

    我有这样的课程 public class RateData Map
  • 无法从非 EcmaScript 模块导入命名导出“指令”(仅提供默认导出)

    这是我正在开发的一个离子角度项目 我正在使用 ng lazyload image 插件Link https www npmjs com package ng lazyload image 当我开始编译它时显示这样的错误 Error node
  • 使用 phpunit 9.5 捕获警告、通知和弃用

    Quoting https phpunit readthedocs io en 9 5 writing tests for phpunit html testing php errors warnings and notices https
  • 为什么分析使用 1x1 像素?

    导致插件分析使用 1x1 img 像素调用其代码的原因是什么 这个快捷方式有什么权限 托管 1x1px 图像的服务器记录该请求 这允许收集有关谁加载 和呈现 带有图像的页面的统计信息 浏览器通常允许 img 标签中的跨源 此外 这还允许从与
  • Scala:抽象类型模式 A 未被选中,因为它已被擦除消除

    我正在编写只能捕获特定类型异常的函数 def myFunc A lt Exception try println Hello world or something else catch case a A gt warning abstrac
  • 如何在 Windows 7 上安装 ROracle 软件包?

    我正在尝试在 Windows 7 客户端上安装 ROracle 包 我安装了 Oracle Instant 客户端和 Rtools 安装了 DBI 包 设置了 OCI32 LIB 环境变量 但是当我尝试从命令行安装时 C Temp gt R
  • 按组手动填充多个比例的geom_tile

    I have the following current output 我的目标是像这样的着色 但只填充到最大级别 例如填充停止在当前级别 创建此数据的数据是 df lt tribble Question Code RespondentLe
  • 如何让react中所有可折叠项默认打开?

    我使用reactstrap制作了一个带有令牌的可折叠按钮 并且按钮单击折叠一切正常 我希望保持这种情况 但另一方面 我如何修改它以使所有可折叠按钮在页面初始渲染时打开 访问页面时 所有令牌都需要可见 这意味着所有可折叠项目都需要打开 如果我
  • java 8后具有多个选择的联合查询

    这是我想在 MySQL 中尝试的一个查询 SELECT A x FROM A WHERE A y P UNION SELECT A x FROM A WHERE A y Q 上面是我正在尝试的原始查询的精简版 简单得多的版本 在我原来的查询
  • 从 Android 中的纬度和经度获取城市名称提供的服务不可用 Android 4.0.3?

    我在应用程序中使用的是Android 4 0 3版本 现在我想获取城市名称或其他信息LATITUDE and 经度但当我运行应用程序时 显示服务不可用 Logcat 01 10 13 58 29 279 W System err 1211
  • Twitter Bootstrap Collapse 插件方向 - 水平而不是垂直

    有没有办法从水平方向而不是垂直方向折叠 Bootstrap Collapse 插件 看看代码 这种能力似乎没有内置 但我希望我只是错过了一些东西 任何帮助将不胜感激 谢谢 我想出了如何在不修改或添加任何 JavaScript 的情况下非常轻
  • 自定义 jquery 验证和不显眼的 JavaScript

    我正在尝试编写一个自定义验证 如果在提交表单时文本区域中存在 html 则会给出错误 我有以下内容 它不起作用 我不知道为什么 我也不明白不引人注目的部分 有人可以告诉我如何做到这一点 因为我看到其他有它的例子 文本区域有一个类 note
  • 使用 Polyfit 进行垂直线拟合

    这只是一个基本问题 我正在使用拟合线来分散点polyfit 在某些情况下 我的散点具有相同的 X 值并且polyfit无法在其上放置一条线 必须有某种东西可以处理这种情况 毕竟 它只是一个线配合 我可以尝试交换 X 和 Y 然后再画一条线
  • 在 Perl eval 中捕获变量赋值

    我希望能够从 Perl eval 捕获变量赋值 也就是说 确定代码中分配给哪些变量名称并提取它们的值 例如 如果我运行 eval foo 42 bar 3 14 eval 的结果是 3 14 最后评估的值 但我还希望能够确定名称 foo 和
  • 使用 htmlAttributes 正确制作 ActionLink 扩展

    我为我的 ActionLink 使用自定义扩展 我添加了一个属性data url这意味着被翻译成一个属性data url 即用破折号替换下划线 这是使用我的自定义扩展的链接 1 Ajax ActionLink Add MyRoutes Ge