2011-10-19 28 views
1

好吧,我有一個MVC.net前端使用EF和SQL服務器的數據庫連接。我創建了一個大約100個字段的大對象和一個web ui來選擇和編輯對象。我使用EF將更改保存回數據庫。迄今爲止都很好。使用C#MVC.net和EF啓用/禁用對象編輯

什麼,我現在要做的就是實現一些邏輯來阻止某些對象的編輯,並允許他人。例如:

對象「01」 是確定給大家做任何更改所需的接口已經涵蓋了這個變化。

對象「02」 被「鎖定」反對一切的變化當任何用戶打開該對象在Web應用程序的所有字段應該被禁用,整個事情是隻讀的。

對象「03」 已被某些用戶鎖定,但爲其他用戶解鎖,因此根據用戶角色,他們將獲得R/O全部禁用視圖或已啓用編輯任何視圖。

我可能正好到這一點,並開始黑客的東西在一起,但我只是想知道是否有任何「者優先」的方式或簡單的方式來實現這一目標? TNX。

+0

您在詢問如何實現記錄級別安全性,但是您不指定應用程序的參數。你有沒有用戶/角色的概念?如果是這樣,你如何保持會員資料?這個大對象是數據庫中類似實體的映射嗎?在切線上,你有沒有考慮過分割這個拼接對象? –

+0

該對象是一個法律案件,有很多字段和許多鏈接的記錄分區可能不是一個選項,它不是關於對象的大小,對象可能只是2個字段,更多關於該過程。我使用.net成員資格和角色再次管理用戶不是我的主要焦點。我可以在保存前編寫代碼來檢查用戶角色,我也可以編寫代碼來確定記錄是否被鎖定,並顯示RO或Editable界面,我只是想知道這個想法是否有一個常見的做法或設計模式。 – Jammy

回答

0

那麼做到這一點的首選方法是做在您的視圖。所以,你必須像

<p> 
    @Html.LabelFor(model => model.Option1) 
    @Html.TextBoxFor(model => model.Option1) 
</p> 

<p> 
    Option2: @Option2 
</p> 

<p> 
    @Html.LabelFor(model => model.Option3) 
    @if(@User.IsInRole("something")) { 
     @Html.TextBoxFor(model => model.Option3) 
    } 
    else { 
     @Model.Option3 
    } 
</p> 

Peronally我不會在查看@ User.IsInRole(XXX)我想有一個預先計算在通過在視圖模型,但我通過一個IsAdmin布爾參數在這個例子中,爲了簡潔起見,