- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在编写 htmlhelper 扩展时,如果我想为我的 htmlhelper 扩展方法支持类似结构的构造函数,我使用 RouteValueDictionary
如下:
public static string ListBoxDict(this HtmlHelper htmlHelper,
string name,
object value,
object htmlAttributes)
{
return ListBoxDict(htmlHelper,
name,
value,
((IDictionary<string, object>)
new RouteValueDictionary(htmlAttributes)));
}
我的问题实际上是为什么需要 RouteValueDictionary
...我知道你不能只转换 htmlAttributes
至IDictionary<string, object>
...虽然我不确定为什么,这可能是我感到困惑的地方。不应该RouteValueDictionary
与路由有关,因此与 HtmlHelper 方法无关?就像我说的,我可能错过了重点,所以如果有人能告诉我我错过了什么,我会很高兴。
干杯...
编辑:回应 Dan 的回答 -->
我只是按照我在 mvc 源代码中看到的输入助手的使用情况进行操作...
src\SystemWebMvc\Mvc\Html\InputExtensions.cs
”它的作用如下:
public static string TextBox(this HtmlHelper htmlHelper,
string name,
object value,
object htmlAttributes)
{
return TextBox(htmlHelper,
name,
value,
new RouteValueDictionary(htmlAttributes))
}
显然是一个捷径,但这是一种 SCSS 还是可以这样做?
最佳答案
我强烈建议您查看 Rob Conery 的 blog post关于这样的事情。
它的主要内容是:
代码转储:
public static string ToAttributeList(this object list)
{
StringBuilder sb = new StringBuilder();
if (list != null)
{
Hashtable attributeHash = GetPropertyHash(list);
string resultFormat = "{0}=\"{1}\" ";
foreach (string attribute in attributeHash.Keys)
{
sb.AppendFormat(resultFormat, attribute.Replace("_", ""),
attributeHash[attribute]);
}
}
return sb.ToString();
}
public static string ToAttributeList(this object list,
params object[] ignoreList)
{
Hashtable attributeHash = GetPropertyHash(list);
string resultFormat = "{0}=\"{1}\" ";
StringBuilder sb = new StringBuilder();
foreach (string attribute in attributeHash.Keys)
{
if (!ignoreList.Contains(attribute))
{
sb.AppendFormat(resultFormat, attribute,
attributeHash[attribute]);
}
}
return sb.ToString();
}
public static Hashtable GetPropertyHash(object properties)
{
Hashtable values = null;
if (properties != null)
{
values = new Hashtable();
PropertyDescriptorCollection props =
TypeDescriptor.GetProperties(properties);
foreach (PropertyDescriptor prop in props)
{
values.Add(prop.Name, prop.GetValue(properties));
}
}
return values;
}
用法:
public static string ListBoxDict(this HtmlHelper htmlHelper,
string name,
object value,
object htmlAttributes)
{
return htmlHelper.ListBoxDict(name,
value,
htmlAttributes.ToAttributeList()));
}
.ToAttributeList()
的作用是将 htmlAttribute 对象转换为
name = "value"
希望这是有道理的。
关于asp.net-mvc - HtmlHelper 方法和 RouteValueDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/683952/
作为 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
我是一名优秀的程序员,十分优秀!