- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道我可以通过执行以下操作将 html 属性添加到我的标签中:
var htmlAttributes = new RouteValueDictionary { { "data-foo", "bar" } };
var tag = new TagBuilder("div");
tag.MergeAttributes(htmlAttributes );
@tag
输出:
<div data-foo="bar"></div>
我想知道我是否可以通过使用标记而不是标签生成器以类似的方式添加属性。也许是这样的:
var htmlAttributes = new RouteValueDictionary { { "data-foo", "bar" } };
<div @htmlAttributes.ToHtmlAttributes() ></div>
预期输出:
<div data-foo="bar"></div>
显然,我无法以这种方式处理合并冲突。但是,我认为这是值得的,因为第二种方式可读性更高。
最佳答案
您可以编写自己的扩展方法:
namespace SomeNamespace
{
public static class RouteValueDictionaryExtensions
{
public static IHtmlString ToHtmlAttributes(this RouteValueDictionary dictionary)
{
var sb = new StringBuilder();
foreach (var kvp in dictionary)
{
sb.Append(string.Format("{0}=\"{1}\" ", kvp.Key, kvp.Value));
}
return new HtmlString(sb.ToString());
}
}
}
这将完全按照您的描述使用:
@using SomeNamespace
@{
var htmlAttributes = new RouteValueDictionary
{
{"data-foo", "bar"},
{"data-bar", "foo"}
};
}
<div @htmlAttributes.ToHtmlAttributes()> </div>
结果是:
<div data-foo="bar" data-bar="foo" > </div>
编辑:
如果你想使用 TagBuilder
,你也可以编写另一个在内部使用它的扩展:
public static IHtmlString Tag(this HtmlHelper helper,
RouteValueDictionary dictionary,
string tagName)
{
var tag = new TagBuilder(tagName);
tag.MergeAttributes(dictionary);
return new HtmlString(tag.ToString());
}
下面显示的用法给出了与之前相同的输出 html:
@Html.Tag(htmlAttributes, "div")
关于c# - RouteValueDictionary 到 HtmlAttributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618299/
作为 this question 的后续,我正在尝试实现自定义路由约束,以便为特定路由动态修改 RouteValueDictionary。 我已经完成了 95%:我可以根据提供的参数模式匹配任何路由,
我有一个 MVC3 RouteValueDictionary,我想将其快速转换为匿名类型。 例如: new RouteValueDictionary(){{"action","search"}} 将与
我想知道是否有一种方法可以在给定虚拟路径的情况下返回与路径匹配的路由的参数名称和值的集合。我需要它来获取目标页面上 URL 的参数,而无需对正则表达式进行硬编码。 这是我猜 RouteTable.Ro
我知道我可以通过执行以下操作将 html 属性添加到我的标签中: var htmlAttributes = new RouteValueDictionary { { "data-foo", "bar"
我想查看 System.Web.Routing.RouteValueDictionary 类的源代码。但 Reflector 无法正确反汇编。 谢谢! 最佳答案 使用新的 .NET Reference
我正在创建一个可重用的方法来检查我的模型并自动构建 URL(通过 ActionLink)进行分页。我的模型的属性之一是 string[] (对于多选选择列表)这是完全有效的。 URL 的一个例子是:h
我想返回一个 RedirectToRouteResult将用户发送到如下所示的 URL: /MyController/MyAction/id?newid=3&newid=5&newid=7 newid
我想知道是否有一种优雅的方法可以将复杂类型的数组添加到 RouteValueDictionary 或兼容类型? 例如,如果我有一个类和一个 Action : public class TestObje
如果您有路线: routes.MapRoute("search", "{controller}/{action}/{filter1}/{filter2}/{filter3}", _ New Wit
我有一个 RouteValueDictionary 附加到传递给 View 的对象。该对象包含一个名为 SelectedItems 的其他对象数组,用于用用户可以选择的复选框填充网格。由于此对象随后会
我正在使用 RouteValueDictionary 将 RouteValues 传递给 ActionLink: 如果我编码: 链接结果正常: SearchArticles?refSearch=2&
在编写 htmlhelper 扩展时,如果我想为我的 htmlhelper 扩展方法支持类似结构的构造函数,我使用 RouteValueDictionary如下: public static stri
我正在为我的应用程序编写一个帮助程序,它为给定的强类型 Controller /操作写出一个菜单项,如下所示: (c => c.WhateverAction(), "Whatever") %> 作为此
我正在使用 ASP.Net MVC 2,但遇到了一个小问题。我需要从值列表中生成一个 url。 使用以下代码: RouteValueDictionary dic = new RouteValueDic
这两段代码是一样的吗? RouteValueDictionary dic=new RouteValueDictionary(); dic.Add("controller", "Home"); dic.
每当我使用 t4Mvc 创建表单发布网址时,例如 它会生成如下所示的路由: 或者当我使用 该方法需要一个它生成的 Action 参数 其他人有这个问题吗? 最佳答案 我明白了,这是因为 T4M
在实现 WebApplication 时,我们在 RouteValueDictionary 中遇到了一个带有键“RouteModels”的可疑条目。 即使是 Google 也没有给我该条目的结果。有人
我需要从任意请求路径(与当前请求不相关)提取路由数据(Controller、Action等),例如/ 或 /account/manage。在以前版本的 Asp.Net Mvc 中,这可以像这样完成:
跨搜索结果页面保留表单帖子( View 模型)结果的最佳方法是什么? 我有一个包含复选框的搜索表单。此表单是使用 View 模型构建的,例如 public class SearchViewModel
我需要生成此网址:http://localhost:3178/Reports/?GroupId=1211&GroupId=1237 我正在尝试: var routeData = new RouteVa
我是一名优秀的程序员,十分优秀!