2014-10-30 57 views
1

有沒有辦法讓MVC忽略發佈綁定文本框,如果它目前隱藏?防止隱藏文本框回發

@Html.TextBoxFor(x => x.Value, new { style = "display:none;"}) 

我真的不想使用JavaScript來實現這一點,但想知道它是否有可能與MVC開箱即用。

這裏是一個javascript解決方案: 在發佈之前清除任何隱藏文本框的ID和名稱字段,以防止MVC綁定。

是否有更好的非JavaScript方式來達到相同的最終遊戲?

回答

2

使其禁用:

@Html.TextBoxFor(x => x.Value, new { style = "display:none;", disabled = "disabled"}) 
+1

這肯定會起作用,但是作爲OP的一個問題:爲什麼您甚至需要呈現禁用和隱藏的文本框?用戶看不到它,它實際上什麼也不做,所以你甚至可能不會擁有它。 – 2014-10-30 18:30:28

+0

和轟隆去炸藥!謝謝!!很簡單。 – Botonomous 2014-10-30 18:52:18

+0

@ChrisPratt輸入始終是禁用的,它會在用戶按下按鈕時顯示。現在我可以顯示輸入並刪除禁用的屬性。 – Botonomous 2014-10-30 19:09:55

1

當然,我不知道它的全部需要,但如果你希望將來自後端的一些數據,並且需要堅持下去的HTML代碼此數據(例如,在前端使用它),並且您不需要將其重新發回給服務器,我將採取Sugest以避免TextBoxFor,並且堅持爲'數據 - '屬性。

<div id="someId" data-my-important-value="@Model.Value"> ... </div> 

這樣,你會從你的後端帶上您的數據,將確保這將不貼回來做服務器,將能夠使用JavaScript從前端提出要求,jQuery的, angujarJs ...

var importantValue = $('#someId').attr('data-my-important-value'); 

正如我所說,只是另一個等待威脅的情況。正如@MajoB已經給出了一個快速和有效的答案。