在asp.net-mvc网站上,处理可编辑和只读视图是否有良好的模式?

leo*_*ora 3 forms asp.net-mvc readonly entitlements

我有一个asp.net-mvc网站,到目前为止还没有任何权利,因为它对所有人开放.许多页面都是带有文本框,选择下拉列表等的详细表单

我现在需要更改它以使许多现有页面"有权",因此只有某些人具有编辑功能,而其他人都看到了只读页面.我想知道我是否应该

  1. 为我的一个现有视图创建一个单独的视图,其中的表单只读取页面上的html,并根据服务器端的权限重定向,类似于

    public ActionResult OrderView()
    {
         var isEntitled = Model.IsEntitled()
         if (isEntitled)
         { 
              return("OrderEditableView", GetViewModel()); 
         }
         else 
         {
             return("OrderReadOnlyView", GetViewModel());  
         }
    
    Run Code Online (Sandbox Code Playgroud)

    }

要么

  1. 重复使用相同的视图,只需禁用或隐藏屏幕上的"保存"按钮即可.

在我看来

     <% if (Model.IsEntitled) { %>
           <button id="saveButton">Save Changes</button>
     <% } %>
Run Code Online (Sandbox Code Playgroud)

第二个选项可以更快地实现,但会有点奇怪,因为它看起来像你可以编辑所有字段,但只是没有看到(或看到一个禁用)窗体上的保存按钮.

第一个选项似乎更干净,但我必须为我的每个屏幕创建一个新视图,这似乎很多工作(目前超过100个视图)

这似乎是一种常见的情况所以我想看看是否有处理这种情况的最佳做法.显然,我正在寻找一个解决方案,考虑到我目前的情况,但如果有一些模式或解决方案被认为是最佳实践,或者如果我从头开始,我也会感兴趣.

aam*_*jad 5

我会为两者创建一个单独的部分/完整视图.

理由: 只在可编辑部分中
轻松更改和维护
验证代码
清楚地分离关注点
清洁代码
可能是我们可以通过抽象/分离类似代码来重用某些代码以重新使用部分视图
轻松控制访问

此外,在现实世界中,我们在预算,时间和精力之间取得平衡.所以考虑到我可以根据情况使用这些的混合.