2012-05-21 161 views
0

我一直非常努力地處理幾個非常長的視圖,這些視圖通過「ViewModel」中介附加到我的模型。我的模型在一個單獨的項目中。MVC 3隱藏字段

所有的工作正常,但我想隱藏的視圖中的一些領域。我已經使用了大部分,這樣的事情:

 <td id="Left">@Html.LabelFor(x=>x.Id)</td> 
     <td id="Right">@Html.TextBoxFor(model => model.Id)</td> 

所有領域迄今(有每個視圖幾百

它沒有任何意義,我得去到這些。並改變他們中許多人HiddenFor,我必須這樣做,在很多地方

我想知道是否有把它在視圖模型的屬性的選項,如:。

[Display(Name = "ID:")] 
    [HiddenInput(DisplayValue = false)] 
    public int Id { get; set; } 

爲了一次隱藏標籤和輸入文本框,所以只有我標記的字段出現。我想我應該能夠設置一個屬性來做到這一點,所以我錯了。

在此先感謝您的幫助。

+0

這是最好的實踐方式做到這一點,雖然,別的,它是會得到醜陋:) – mattytommo

+0

你可以定義一個EditorTemplate帶屬性的元數據工作。併發出相應的(可能不是最佳實踐方式,但它是乾淨利落的)看看這個:http://stackoverflow.com/questions/3828985/get-value-from-custom-attribute-in-editor-template – BigMike

+0

似乎最接近我想要的就是在視圖上註釋TR。儘管感謝您的回答,但# –

回答

0

不,您的情況是,沒有解決方案。

ScaffoldColumnAttribute控制生成的輸入和標籤一起,但它可以在行動只有當你使用動態生成的觀點,使用EditorForModel可見。這種技術完全去除了html,這與生成隱藏的輸入不同。

你可以嘗試管理,使用jQuery和attribute ends with selector雖然

<script> 
$(function() { 
    $('input[name$="Id"]').closest('tr').hide(); 
}); 
</script> 
+0

問題在於您必須爲每個要隱藏的字段生成一行。在最壞的情況下,我願意在視圖模型中定義一個屬性接近該字段的位置。不過謝謝你的答案。 –

+0

實際上,每個字段都需要一個選擇器,並且只有在字段名稱不屬於某些通用邏輯的情況下。例如,對於所有名稱以Id結尾的屬性,示例代碼將無需更改即可使用 – archil