2013-05-15 326 views
1

目前我正在創造它引用了MVC 3使用EF數據庫的應用程序我已經使用了腳手架讀/寫數據,並希望能夠讓一些編輯要在數據庫中完成條目,但不是所有字段。有沒有辦法阻止用戶編輯編輯表單中的某些字段,從而編輯數據庫?限制編輯功能

自從我最初的問題,我試圖通過改變

<div class="editor-label"> 
     @Html.LabelFor(model => model.Clause) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Clause) 
     @Html.ValidationMessageFor(model => model.Clause) 
    </div> 

使用

<div class="editor-label"> 
     @Html.LabelFor(model => model.Clause) 
    </div> 
    <div class="editor-field"> 
     @Html.DisplayFor(model => model.Clause) 
    </div> 

然而,當實際保存編輯限制編輯功能,其中引用DisplayFor場場出來空白。有沒有更好的方式做到這一點,所以不會發生?

非常感謝,

Chri3

回答

1

嗯,他們有相當多的解決方案。

  1. 您可以只顯示字段,你在你看來想要編輯(不安全,惡意人們可以到你的表單中添加不需要的字段值)。

  2. 您可以手動更新只在您的控制器需要的領域。

  3. 可以使用的ViewModels,這將只需要在屬性你想編輯(我勸你選擇的解決方案)。

編輯 如果你想擁有的形式傳遞所顯示的值,而不是「明顯可編輯」,你得把它作爲一個隱藏字段。

@Html.DisplayFor(model => model.Clause) 
@Html.HiddenFor(model => model.Clause) 

但這是解決方案1.在我的答案中,可能是最糟糕的一個。

順便說一句,如果你不想編輯這個領域,你不應該,如果它回來腦子裏一片空白。只要改變你更新你的實體的方式。

+0

感謝您的評論,請參閱修改後的問題。 – Chri3

+0

@Chri3看到修改答案然後;) –

+0

查看模型是走的路!!!!! :-) – klabranche