我们应用程序的某些用户将拥有对我们许多页面的只读访问权限,在我们当前的Web表单应用程序中,这意味着他们会看到该表单,但所有字段都被禁用。我们正在研究MVC 3并寻找实现此功能的最干净,最惯用的方式。
到目前为止的一些想法:
我倾向于排名第一,但我想知道你们中任何一位拥有更多MVC经验的人是否以更好的方式解决了这个问题。
答案 0 :(得分:1)
我同意使用基本视图模型,或者只是具有“CanEdit”类型属性的接口。如果你去接口路由,你可以在OnActionExecuted方法的ActionFilter中设置属性。
要将其绑定到视图,创建一个新的HtmlHelper将非常简单。我使用TextBoxFor作为基类,因为它可以访问视图的模型。然后,您可以检查该属性并创建必要的HTML属性。但是,通过这条路线,你需要为你需要的每种输入控件创建一个新的帮助器(文本框,选择列表等)。
在不知道您正在做什么的所有细节的情况下,更简单的想法是不为只读用户提供“保存”按钮。 “保存”按钮将由视图模型中的一个属性(或ViewData,如果您愿意)驱动。
其他一些人提到仍然需要服务器端限制来阻止人们绕过客户端限制。您需要一个动作过滤器。 This link对此有很好的了解。
答案 1 :(得分:0)
我的偏好是使用全局操作过滤器在公共基本视图模型(或ViewData)中设置变量,然后使用一些jquery来动态禁用输入字段,删除按钮等。
$(':input')。attr('readonly',true);