当前位置: 首页 > 面试题库 >

如何在ASP.NET MVC中的HTML-5 data- *属性中使用破折号

陶元凯
2023-03-14
问题内容

我正在尝试在ASP.NET MVC 1项目中使用HTML5数据属性。(我是C#和ASP.NET MVC新手。)

 <%= Html.ActionLink("« Previous", "Search",
     new { keyword = Model.Keyword, page = Model.currPage - 1},
     new { @class = "prev", data-details = "Some Details"   })%>

上面的htmlAttributes中的“数据细节”给出以下错误:

 CS0746: Invalid anonymous type member declarator. Anonymous type members 
  must be declared with a member assignment, simple name or member access.

当我使用data_details时,它可以工作,但是我想它必须按照规范以“ data-”开头。

我的问题:

  • 是否有任何方法可以使此工作正常运行,并将HTML5数据属性与Html.ActionLink或类似的Html帮助器一起使用?
  • 是否有其他替代机制可将自定义数据附加到元素?稍后将由JS处理此数据。

问题答案:

更新:MVC 3和更高版本对此提供了内置支持。 有关建议的解决方案,请参见下面JohnnyO的高度评价的答案。

我认为没有任何直接的帮助者可以实现这一目标,但是我确实有两个想法可供您尝试:

// 1: pass dictionary instead of anonymous object
<%= Html.ActionLink( "back", "Search",
    new { keyword = Model.Keyword, page = Model.currPage - 1},
    new Dictionary<string,Object> { {"class","prev"}, {"data-details","yada"} } )%>

// 2: pass custom type decorated with descriptor attributes
public class CustomArgs
{
    public CustomArgs( string className, string dataDetails ) { ... }

    [DisplayName("class")]
    public string Class { get; set; }
    [DisplayName("data-details")]
    public string DataDetails { get; set; }
}

<%= Html.ActionLink( "back", "Search",
    new { keyword = Model.Keyword, page = Model.currPage - 1},
    new CustomArgs( "prev", "yada" ) )%>

只是想法,还没有测试



 类似资料:
  • 问题内容: 过去,我一直使用下划线在HTML中定义 类 和 id 属性。在过去的几年中,我改用破折号,主要是为了使自己适应社区中的趋势,而不一定是因为这对我来说很有意义。 我一直认为破折号有更多弊端,但我看不出这样做的好处: 代码完成和编辑 大多数编辑器都将破折号视为单词分隔符,因此我无法浏览所需的符号。假设课程为“ ”,我必须自动完成“ ”,输入连字符,然后完成“ ”。 带下划线的“ ”被视为一

  • 问题内容: 我正在看http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options为jQuery创建一个简单的插件。在有关选项和设置的部分之后,我执行了以下操作,该操作不起作用(脚本遇到设置后退出)。 一旦我从背景色中删除了破折号,一切就可以正常工作。 我是否缺少某些内容,或者jQuery文档是否错误? 问题答案: 没有。解析器会将其解释

  • 问题内容: 我们有一个JSON对象,其中一个对象的名称中带有短划线。例如下面。 我们如何反序列化此json? 问题答案: 您可以使用DataContractJsonSerializer实现此目的 现在您可以使用以下方式反序列化它:

  • 问题内容: 当字符串具有破折号时,我无法从json对象检索值: 如果我尝试引用已解析的文件,它将返回但jsonObj.user_id将返回6789 我没有办法修改外部api调用返回的值,并且试图解析返回的字符串以删除破折号也会破坏传递的url等。救命? 问题答案: 是减法表达式(即)。 要访问包含不能出现在标识符中的字符的键,请使用方括号:

  • 问题内容: 我要备份数据库时出现错误 有什么办法可以用表名(temp_01-01-000001)解决这个问题。 问题答案: 您可以编辑文件/system/database/drivers/mysql/mysql_utility.php的第132行 从: 至:

  • 问题内容: 我有yaml文件的片段: 但我无法使用方法名称创建pojo 有什么方法可以解析此类Yaml文件? 问题答案: 您可以传递自定义PropertyUtils来处理此类情况