2012-11-07 48 views
6

我已經在我看來,以下位:HTML.TextBoxFor禁用不及格值

@Html.TextBoxFor(model => model.PersonnelId, new { disabled = "disabled" }) 

在我控制我有這樣的:

if (ModelState.IsValid) 
{ 
    PersonnelFacade.SavePerson(person); 
    return RedirectToAction("Index"); 
} 

現在,當我檢查person.PersonnelId是空。 當我刪除{disabled =「disabled」}它工作正常,但我可以更改PersonnelId,這不是我想要做的。

我在做什麼錯?

+0

你可以使用'HiddenFor' +'DisplayFor'代替,或者只是HiddenFor'加上'以你已經擁有。無論如何,在瀏覽器級別依靠這種保護是沒有意義的。任何人都可以發送僞造的POST查詢並將其'PersonnelID'更改爲他們想要的。 – GSerg

+0

這些都不提供與禁用的文本框相同的功能嗎? – Liam

+0

在我的示例中,我將它與PersonnelId一起使用。但是我想爲CreationDate使用相同的內容,因此用戶可以查看創建人員的時間,或者在最後一次更改時顯示ModificationDate。 DisplayFor不會傳遞該值。隱藏的,我可以用於PersonnelId,因爲你不是真的應該看到它。但是我不能將它用於CreationDate或ModificationDate,因爲它們應該被顯示。 –

回答

5

嘗試使其只讀。

@Html.TextBoxFor(model => model.PersonnelId, new { readonly= "readonly" }) 
+1

「只讀」工作正常,但文本框仍處於啓用狀態。當我添加「禁用」時,它會再次丟失值。 –

9
嘗試

2個值

  1. PersonnelIdForDisplay
  2. PersonnelId

然後在您的視圖

  1. @ Html.TextBoxFor(型號=> model.PersonnelIdForDisplay,新{disabled =「禁用」})
  2. @ Html.HiddenFor(P => p.PersonnelId)
+0

謝謝..它對我有幫助.. –