2010-10-20 51 views
4

我们的应用程序的一些用户将拥有对我们许多页面的只读访问权限,在我们当前的Web表单应用程序中,这意味着他们看到了表单,但所有字段都被禁用。我们正在研究MVC 3,并寻找实现此功能的最干净,最习惯的方式。我可以使用MVC全局动作过滤器来禁用表单域吗?

一些想法而已:

  1. 的全球行动过滤器和编辑模板的一些组合。
  2. 的自定义HTML帮手,像Html.SecureTextBox等...

我倾向于1号,但我想知道如果任何你们/更多的MVC经验的女生已经解决了这个问题以更好的方式。

+0

你如何定义哪些字段被禁用?通过属性,通过数据库? – jfar 2010-10-20 19:40:54

+0

它目前有两种工作方式,页面基类循环浏览页面上的所有控件并禁用它们,或者您可以在后面的代码中覆盖此行为。页面是否应该是只读是授权角色。 – Dave 2010-10-20 20:43:47

回答

1

我同意使用基本视图模型,或者只是具有“CanEdit”属性类型的接口。如果你使用接口路由,你可以在OnActionExecuted方法的ActionFilter中设置属性。

要将它与视图绑定,创建一个新的HtmlHelper将非常​​简单。我会使用TextBoxFor作为基类,因为它可以访问视图的模型。然后,您可以检查该属性并创建必要的HTML属性。但是,通过使用此路线,您需要为您需要的每种类型的输入控件(文本框,选择列表等)创建一个新的帮助器。

不知道你在做什么的所有细节,一个更简单的想法是不提供只读用户的保存按钮。保存按钮将由视图模型中的一个属性(或ViewData,如果您喜欢)驱动。

其他几个人提到,仍然需要服务器端限制来防止人们绕过客户端限制。你需要一个动作过滤器。 This link对此有个好主意。

0

我更倾向于将设置一个变量在一个共同的基本视图模型(或ViewData的),使用一个全球行动过滤,然后使用位的jquery的动态禁用输入字段,删除按钮等

$(':input')。attr('readonly',true);

+0

用户需要做的就是禁用javascript来编辑他们没有权限编辑的字段? – jfar 2010-10-20 19:59:42

+0

好点,或许是相反的。绘制一切禁用,然后使用jQuery来启用它。 – Clicktricity 2010-10-20 20:04:47

+0

禁用表单字段对用户来说真的只是一个方便,后端代码将阻止任何更改发生,如果他们不应该。 – Dave 2010-10-20 20:51:07

相关问题