2012-06-29 154 views
0

在MVC 3剃鬚刀項目,我已經在視圖模型中定義DisplayFormat格式化的DateTime屬性MVC剃刀只讀TextBoxFor

[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)] 
[Display(Name = "Posted Date")] 
public DateTime PostedDate { get; set; } 

,我需要做只讀在視野中

@Html.TextBoxFor(model => model.PostedDate, new { @readonly = "readonly" }) 

但在TextBoxFor中顯示日期時,它不適用DisplayFormat。如果將TextBoxFor更改爲EditorFor DisplayFormat已應用,但無法應用只讀CSS屬性。如何使用日期格式&使文本框只讀?

+0

您是否在獲取文本框時編輯渲染 –

+0

Nalaka,您是否嘗試過使用HtmlProperties符號? (查看答案上的鏈接,在此處突破) –

回答

2

你仍然可以使用編輯器當渲染器的編輯器,我相信根據你的情況它應該仍然渲染到文本框後渲染你可以使用一個簡單的jquery函數添加一個屬性只讀渲染文本框

$("#PostedDate").attr("readonly", "readonly"); 

不知道這是否最好的解決辦法,但你可以嘗試

+0

非常感謝...... – Nalaka526

+0

此解決方案的缺點是它只在客戶端強制執行只讀屬性,可以由聰明的用戶在爲了在將更新的數據提交回服務器之前更改該字段中的數據。 – Derek

0

你也可以用另一種計算策略爲只讀TextBoxFor與asp.net software developers

@Html.TextBoxFor(model => model.PostedDate, "{0:dd-MMM-yyyy}", new { @readonly = "readonly" }) 

或 使用jQuery

用於顯示日期格式
$('#PostedDate').attr('readonly', true); 
0

使用下面做工精細

$('#PostedDate').attr('readonly', true); 

$('#PostedDate').attr('readonly', 'readonly');