【问题标题】:MVC 4 ActionLink Dictionary htmlAttributes doesn't workMVC 4 ActionLink 字典 htmlAttributes 不起作用
【发布时间】:2012-05-19 02:36:30
【问题描述】:

我希望这只是一个错误,但我想也许这只是我。

@Html.ActionLink("Test", "Test", "Test",
  new { id = 1 },
  new Dictionary<string, object> { { "class", "ui-btn-test" }, { "data-icon", "gear" } })

这确实有效,但如果我想添加更多属性,我必须手动完成!

@Html.ActionLink("Test", "Test", "Test",
  new { id = 1 },
  new { @class="ui-btn-test", data_icon="gear", data_new_attr="someextra" })

第一个不再工作了,我需要这个工作。第二个有效但不在乎它是否有效,因为我正在尝试添加更多属性,除非另有说明,否则对象将无法工作。

【问题讨论】:

  • 有什么问题?第二种方式是指定htmlAttributes的首选方式。
  • 在 MVC 4 中,我首选的第一种方式无法正常工作。我得到类似这样的属性。 首页
  • 您为什么要采用第一种方式。第二种方式有效,是公认的做法,更容易阅读。
  • 我想,我自己解释了。原因是能够在运行时添加更多属性。除此之外,它是一种在文档中被描述为可接受参数的方法,那么为什么我在使用所描述的方法时遇到问题?

标签: razor asp.net-mvc-4


【解决方案1】:

所提供的ActionLink 辅助方法都不接受您指定的参数。唯一采用 IDictionary 类型参数作为 html 属性的参数需要 RouteValueDictionary 作为路由值。实际上,您当前正在调用一个将您的字典视为匿名对象的函数

试试

@Html.ActionLink("Test", "Tesz", "Test",
new RouteValueDictionary(new {id = 1}),
new Dictionary<string, object> { { "class", "ui-btn-test" }, { "data-icon", "gear" } })

或者实现你自己的扩展方法。

【讨论】:

  • 效果很好!我正要实现自己的扩展方法,但不想重写我所有的操作链接。
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 2012-10-03
  • 2013-02-23
相关资源
最近更新 更多