2014-01-22 65 views
1

爲了修改您在使用@Html.EditorFor(m => m.SomeAttribute)時顯示的樣式,我想知道如何覆蓋默認CSS類,而無需爲模型的每個屬性數據類型聲明新類。換一種說法。MVC:哪個CSS類實現Html.EditorFor()方法?

我不想這樣做:

@Html.LabelFor(m => m.ddlStationId, new {@class="label"}) 
    @Html.EditorFor(m => m.ddlStationId, new { ReadMethod = "Read", ReadController = "Receiver",@class="combobox" }) 
    @Html.EditorFor(m => m.txbBrandName,new {@class="textbox"}) 

大家都知道,EditorFor()具有依賴於數據類型的不同行爲,所以我想知道位於這個類。

我通過使用UIHint類作爲裝飾器並定義了EditorTemplate,但不允許我重寫主CSS。重要的是要說我正在使用Kendo UI框架。一些額外的信息可能是相關的。

回答

0

謝謝湯米!我做了這樣的事情,但使用UIhint ......所以,當我聲明一個屬性時,我根據數據類型設置了一些裝飾器,並且在那裏使用了Css類。例如:

[Required] 
[Display(Name = "Nombre")] 
[UIHint("String")] 
public string txbName 
{ 
    get; 
    set; 
} 

而且,在編輯模板:

@model object 

@Html.TextBoxFor(model => model, new {@class="k-textbox",style="min-width:200px;" }) 

最後,CSS類 「K-文本框」

.controls-row .k-textbox { 
    margin: 0 auto; 
    clear: left; 
    display: inline-block; 
} 

的定義我preffer這個解決方案,因爲允許我將這個標記應用於解決方案中的所有文本框...對於我的具體情況是我想要做的:

<div class="controls-row"> 
    @Html.LabelFor(model => model.txbName) //it shows "Nombre" 
    @Html.EditorFor(m => m.txbName) //it declares an editor for string type 
</div> 

感謝您的回答! :)

2

除非您覆蓋默認模板,否則不存在「默認」類。根據您的DataAnnotations,行爲可能會與所顯示的值不同(格式化字符串,也許您有一個將日期選擇器放在文本輸入上的模板),但以下各項的輸出在MVC中保持一致。在HTML

<label for="Property">Property Value</label> 

@Html.LabelFor(x=>x.Property) 

輸出對於一個字符串屬性在HTML

@Html.EditorFor(x=>x.SomeStringProperty) 

輸出

<input type="text" id="SomeStringProperty" name="SomeStringProperty" value=""/> 

最後,布爾屬性

@Html.EditorFor(x=>x.SomeBoolProperty) 

輸出在HTML

<input type="checkbox" id="SomeBoolProperty" name="SomeBoolProperty"/> 

鑑於此,然後在您的樣式表,您需要創建不是基於class和id的頂級HTML元素的類。這樣的例子可能是

<style> 
    <!--apply to all labels --> 
    label { position: absolute; text-align:right; width:130px; } 
    <!--apply to all labels with class check--> 
    label.check { font-weight:bold;padding-left:10px } 
    <!-- apply to all input and textarea tags--> 
    input, textarea { margin-left: 140px; } 
    <!-- apply to all input with class special--> 
    input.special { font-weight: bold } 
</style> 

如果您在配備了一個基本的MVC模板默認的樣式表看,你可能會看到的東西相似,我已經張貼以上。您可以使用您的自定義類進行編輯。

相關問題