当前位置 : 主页 > 网络编程 > ASP >

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

来源:互联网 收集:自由互联 发布时间:2021-06-24
我有一个asp.net-mvc网站,到目前为止还没有任何权利,因为它对所有人开放.许多页面都是带有文本框,选择下拉列表等的详细表单 我现在需要更改它以使许多现有页面“有权”,因此只有某
我有一个asp.net-mvc网站,到目前为止还没有任何权利,因为它对所有人开放.许多页面都是带有文本框,选择下拉列表等的详细表单

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

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

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

}

要么

>重复使用相同的视图,只需禁用或隐藏屏幕上的“保存”按钮.

在我看来

<% if (Model.IsEntitled) { %>
           <button id="saveButton">Save Changes</button>
     <% } %>

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

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

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

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

原因:

易于改变和维护
验证码仅在可编辑的部分
明确分离关注点
清洁代码
也许我们可以通过抽象/分离类似的代码来重用可用的部分视图来重用一些代码
轻松控制访问

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

网友评论