2012-01-27 58 views
3

我有一個EditorFor HTML幫助這樣的:禁用EditorFor

<td>@Html.EditorFor(m => m.Name, belowLevel ? disabledHtmlOptions : null)</td> 

-

object disabledHtmlOptions = new { disabled = "disabled" }; 

我要讓每一次這種禁用。我怎麼做?我不想做數據註釋,因爲這個屬性也在其他視圖中使用。只有在這個視圖我想禁用它。

+0

raj,你冒險得不到一個好的答案,因爲你對問題的描述有點模糊。有沒有什麼方式與您的例子,擴大對問題和所需解決方案,或許正在擴大一點,加上背景的潛臺詞可能的話 –

+0

@Jim,我不知道我怎麼能更準確地描述它,但是,我只需要禁用我的文本框或editorfor正在顯示名稱的框。我可以在標籤中顯示,但那不是要求。 –

+0

拉吉 - 我認爲你的編輯剛剛幫助:) –

回答

4

,如果你堅持使用EditorFor你可以設置通過jQuery頁面上的禁用屬性加載。我知道這不是理想的,但除非你創建EditorFor接受的htmlAttributes收集

$(document).ready(function() { 
    $('#Name').attr('disabled', 'disabled'); 
}); 
+0

讓我看看這是否會起作用。 –

3

你可以只渲染視圖HTML。如果它的意思是「只讀」,只需渲染文本。否則,您可以渲染一個<input>元素。

例如,而不是

<td>@Html.EditorFor(m => m.Name)</td> 

<td>@Model.Name</td> 

<td><input type="text">@Model.Name</input></td> 
+1

當我嘗試使用@ m.Name時,m在當前上下文中不存在? –

+1

嘗試'@ Model.Name' – MisterIsaak

+0

嘗試@ Model.Name,(打我給它@Jisaak)。更新了答案。 – contactmatt

3

我不相信EditorFor方法的簽名允許你指定的任何HTML屬性的過載這是唯一的方法。但是,如果您將其更改爲TextBoxFor,則可以。

<td>@Html.TextBoxFor(m => m.Name, belowLevel ? disabledHtmlOptions : null)</td> 
8

MVC 5.1現在允許傳遞HTML中EditorFor (see this answer)屬性。所以你可以這樣做:

@Html.EditorFor(model => m.Name, new { htmlAttributes = new { disabled = "disabled" } })