没有价值的asp.net mvc htmlattribute

时间:2010-11-09 15:18:30

标签: asp.net-mvc asp.net-mvc-2 html5

我正在尝试根据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助手?

3 个答案:

答案 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 = "" }); %>

根据规范:

hiddenboolean 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}))....