2010-11-09 31 views
6

我正在嘗試根據HTML5規範創建一個隱藏表單,其中隱藏屬性沒有使用值。現在,我不知道如何將其強行進入asp.net MVC的asp.net mvc htmlattribute without value

<% Html.BeginForm("ChangeContent", "Content", FormMethod.Post, new {hidden}); %> 

方法與上面一個不

Compiler Error Message: CS0103: The name 'hidden' does not exist in the current context 

任何人知道出路編譯?

編輯

只是出於使用默認的HTML輔助好奇心?

+0

我認爲最好是使用常規的Html而不是Html助手,最後最終編寫相同數量的代碼,而且我看不到從助手獲得的好處。 – 2010-11-09 16:50:33

回答

5

我有一種感覺,你想要的默認BeginForm方法不會做代表。您可以創建一個新的BeginForm方法,將輸出<form>標籤,如你所願,或只寫<form>標籤在HTML手動和使用路由引擎的網址填寫:

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

UPDATE:

要回答你的問題編輯,這是不可能的使用標準助手。以下是MSDN上的參考資料:http://msdn.microsoft.com/en-us/library/dd492714.aspx。根據文檔,屬性必須是名稱/值對。

+0

嗯,我知道,我只是想知道標準助手是否有可能。 – Trimack 2010-11-09 15:46:10

+0

經過一番調查,我更新了我的答案。根據MSDN,屬性必須是名稱/值對。我希望這一點在未來會改變,因爲HTML5正在變得越來越流行。我還沒有研究過MVC3,但看看情況是否如此。 – mkchandler 2010-11-09 15:54:24

4

HtmlAttribute集合由鍵值對組成,這裏的hidden是關鍵。你也必須給它一個價值。正如您現在寫的那樣,編譯器將其解釋爲您正在引用您尚未定義的變量hidden

如果你想在你的HTML hidden = "",使用

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

按照specc:

hiddenboolean attribute。布爾屬性可以以幾種方式[ref]來指示:

的元件上的布爾屬性 的存在表示 真值,並且不存在 屬性的表示假值。

如果屬性存在,它的價值 必須是空字符串或 值是針對 屬性的規範名稱的ASCII 不區分大小寫的匹配,沒有 開頭或結尾的空白。

換句話說,該hidden屬性可以通過三種方式

<... hidden ...> 
<... hidden="" ...> 
<... hidden="hidden" ...> 
+0

還有問題。如果我使用你的建議,我會在代碼中以'hidden =「」'結尾。但我只想'隱藏'。 – Trimack 2010-11-09 15:35:02

+0

我不確定這是否可以使用Html助手。但是,傳遞幫助者並直接將表單直接放入標記中肯定沒有任何問題。 – Chev 2010-11-09 15:41:33

+0

@Chevex我在想同樣的事情。我已經發布了一個完全相同的答案。 – mkchandler 2010-11-09 15:44:06

2

只要使用string.Empty,它將輸出沒有屬性。至少它在MVC 5中有。

@using (Html.BeginForm("Login", "Main", FormMethod.Post, new { name = "loginForm", ng_controller = "loginController", @class = "form-horizontal", novalidate = string.Empty})).... 
相關問題