2013-12-11 71 views
1

我已經使用required屬性標記了模型的屬性。有沒有辦法訪問這個信息客戶端?我的目標是對需要/不需要哪些字段(如Html.EditorFor或類似的*)有某種指示。我想避免簡單地進入視圖並添加指標,因爲我想將所需的東西保存在一個位置(模型)。謝謝。MVC 4如何訪問模型的客戶端所需屬性

分配一個CSS規則規則我唯一的選擇?

+0

可能是你需要編寫一個定製版本的Html.LabelFor輔助方法 – Shyju

+0

除了我主要使用Html.EditorForModel(),這是一個好主意。有什麼方法可以重寫EditorForModel如何呈現標籤,還是我需要自定義該標籤? – aelstonjones

回答

2

您可以檢查CSS中的data-required屬性,因爲該屬性已添加到MVC爲所需屬性生成的HTML中。

我沒有做過,但CSS選擇器可能是這樣的:

[data-required="true"] 

希望這會有所幫助,讓我知道如何去。

+0

看到我的答案,但你提到的選擇幫助我解決。謝謝 – aelstonjones

+0

@aelstonjones很高興能幫到你。 – Kehlan

0

好吧,我得到它與這個JavaScript和jQuery工作:

$(function() { 
    $(':input[data-val-required]').each(function() { 
     var name = $(this).attr('name'); 
     var selector = 'label[for=' + name + ']'; 
     var label = $(selector).first(); 
     var innerHtml = label.html() + '*'; 
     label.html(innerHtml); 
    }); 
}) 

的想法是,在輸入了「數據-VAL-需要」的時候,[必需]屬性添加到模型。當您使用:

<%= Html.LabelFor(m => m.VendorId) %> 
<%= Html.EditorFor(m => m.VendorId) %> 

的HTML將是這樣的:

<div> 
    <label for="VendorId">Vendor Id</label> 
</div> 
<div> 
    <input id="VendorId" class="text-box single-line" type="text" value="" name="VendorId" data-val-required="The Vendor Id field is required." data-val-length-max="255" data-val-length="The Vendor Id field can't exceed 255 characters." data-val="true"></input> 
    <span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="VendorId"></span> 
</div> 

注意「爲」匹配輸入的「名稱」(「身份證」也將工作)和標籤,以便使用該用jQuery改變標籤html。