我正在尝试根据HTML5规范创建隐藏表单,其中隐藏属性使用时没有值。现在我不知道如何强制它进入asp.net mvc的
<% Html.BeginForm("ChangeContent", "Content", FormMethod.Post, new {hidden}); %>
如上所述的方法不能用
编译Compiler Error Message: CS0103: The name 'hidden' does not exist in the current context
任何人都知道出路吗?
修改
只是出于好奇使用默认的html助手?
答案 0 :(得分:5)
我觉得默认的BeginForm
方法不会做你想要的。您可以创建一个新的BeginForm
方法,根据需要输出<form>
标记,或者只需在<form>
中手动编写HTML
标记,然后使用路由引擎:
<form action="<%: Url.Action("ChangeContent", "Content") %>" method="post" hidden>
...
</form>
更新:
要回答您的问题编辑,使用标准助手无法做到这一点。以下是MSDN上的参考:http://msdn.microsoft.com/en-us/library/dd492714.aspx。根据文档,属性必须是名称/值对。
答案 1 :(得分:4)
HtmlAttribute集合由键值对组成,此处hidden
是关键。你也必须给它一个值。正如您现在编写的那样,编译器会将其解释为您引用尚未定义的变量hidden
。
如果您想在HTML中使用hidden = ""
,请使用
<% Html.BeginForm("ChangeContent", "Content", FormMethod.Post, new { hidden = "" }); %>
根据规范:
hidden
是boolean attribute
。布尔属性可以通过多种方式表示[ref]:
布尔值的存在 元素上的属性表示 真正的价值,而没有 attribute表示false值。
如果属性存在,则为其值 必须是空字符串或a 值是ASCII 不区分大小写的匹配 属性的规范名称,没有 领先或尾随空格。
换句话说,hidden
属性可以用三种方式表示
<... hidden ...>
<... hidden="" ...>
<... hidden="hidden" ...>
答案 2 :(得分:2)
只需使用string.Empty,它将输出没有属性。至少它在MVC 5中。
@using (Html.BeginForm("Login", "Main", FormMethod.Post, new { name = "loginForm", ng_controller = "loginController", @class = "form-horizontal", novalidate = string.Empty}))....