2010-11-09 69 views
0

我目前正在研究ASP.NET MVC2中的強類型更新視圖。除了用戶可以更新的屬性之外,還有一些屬性是用戶不應該能夠更新的,但是我想要在頁面上顯示(例如,創建日期)。ASP.NET MVC - 顯示沒有更新值的模型字段

下面是我展示這些不可編輯的字段的例子:

<td>Created on:</td> 
<td><%= Html.DisplayTextFor(model => model.CreatedOn) %></td> 

然而,當我提交表單,然後使用斷點控制器上的方法來看到正在模型對象通過POST請求傳遞給方法,非可編輯字段設置爲null或空值(例如,CreatedOn日期設置爲1/1/0001)。可編輯字段正在傳回正確的值。當我將表單發回控制器時,如何在保留原始值的同時顯示這些不可編輯的字段?

回答

1

您不需要原始值。如果您使用UpdateModel(或TryUpdateModel),則可以設置應更新哪些屬性。這個解決方案也比較安全,因爲你明確告訴MVC應該更新哪些屬性。

+0

感謝您的回答。我擔心我依賴於可能僞造包含主鍵的字段的帖子值。我將研究如何使用UpdateModel按照你所說的去做。 – Andrew 2010-11-10 16:41:46

+0

您還可以將綁定屬性附加到實體類或函數參數:http://ittecture.wordpress.com/2009/05/01/tip-of-the-day-199-asp-net-mvc-defining -model結合,明確/ – ZippyV 2010-11-10 21:49:46

0

你需要使用一個隱藏字段,像這樣:

<%= Html.HiddenFor(model => model.CreatedOn) %> 

這將是除了顯示器領域。

+0

隱藏字段可以在客戶端更改。這是一種不安全的方式。 – Egor4eg 2011-06-21 08:03:12