没有价值的asp.net mvc htmlattribute

Tri*_*ack 8 asp.net-mvc html5 asp.net-mvc-2

我正在尝试根据HTML5规范创建隐藏表单,其中隐藏属性使用时没有值.现在我不知道如何强制它进入asp.net mvc

<% Html.BeginForm("ChangeContent", "Content", FormMethod.Post, new {hidden}); %>
Run Code Online (Sandbox Code Playgroud)

如上所述的方法无法编译

Compiler Error Message: CS0103: The name 'hidden' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)

谁知道出路?

编辑

只是出于好奇使用默认的HTML帮助程序?

Sim*_*olt 5

HtmlAttribute集合由键值对组成,这hidden是键。您也必须给它一个值。如您现在所写,编译器将其解释为好像引用了hidden尚未定义的变量。

如果要hidden = ""在HTML中使用

<% Html.BeginForm("ChangeContent", "Content", FormMethod.Post, new { hidden = "" }); %>
Run Code Online (Sandbox Code Playgroud)

根据规格:

hidden是一个boolean attribute。布尔属性可以用几种方法表示[ref]

元素上存在布尔属性表示真实值,而缺少属性则表示假值。

如果存在该属性,则其值必须为空字符串或该属性的规范名称的ASCII大小写不匹配的值,且没有前导或尾随空格。

换句话说,hidden可以用三种方式表示属性

<... hidden ...>
<... hidden="" ...>
<... hidden="hidden" ...>
Run Code Online (Sandbox Code Playgroud)


mkc*_*ler 5

我有一种感觉,默认BeginForm方法不会做你想要的.您可以创建一个可以根据需要BeginForm输出<form>标记的新方法,也可以<form>手动编写标记HTML并使用路由引擎填充URL:

<form action="<%: Url.Action("ChangeContent", "Content") %>" method="post" hidden>
    ...
</form>
Run Code Online (Sandbox Code Playgroud)

更新:

要回答您的问题编辑,使用标准帮助程序是不可能的.以下是MSDN上的参考:http://msdn.microsoft.com/en-us/library/dd492714.aspx.根据文档,属性必须是名称/值对.