为什么 Action/ViewController/ProperttyEditor不可见或不可用?
英文版:https://documentation.devexpress.com/eXpressAppFramework/112818/Concepts/Extend-Functionality/Determine-Why-an-Action-Controller-or-Editor-is-Inactive
构建应用程序时,您可能需要确定Action或控制器在特定窗口中不可用(可见)的原因。可以由于各种原因停用或禁用操作:安全系统权限,当前视图是只读的,当前视图的不方便对象类型以及其他特定参数。由于各种原因,当前视图也可能是只读的。可能需要进行彻底的调试以确定实际原因。为此,eXpressApp Framework提供了诊断信息操作。此操作显示一个窗口,其中包含有关加载到的所有控制器和操作的基本信息应用程序模型在当前View上,以及应用于View的验证规则。此信息将帮助您查找问题并修复问题。本主题详细介绍了如何将诊断信息操作添加到应用程序并使用它来获取所需信息。
启用DiagnosticInfo操作
要将诊断信息操作添加到UI(WinForms或ASP.NET;不支持Mobile),请执行以下操作。
- 打开应用程序项目的配置文件。在WinForms应用程序项目中,它称为App.config,在ASP.NET项目中称为Web.config。
- 找到appSettings部分的EnableDiagnosticActions键。默认情况下,此键的值为False。这就是诊断信息操作未添加到应用程序模型的原因。
- 将EnableDiagnosticActions键的值设置为True。这会将诊断信息操作添加到应用程序模型,并且操作将添加到UI。
<add key = “EnableDiagnosticActions” value = “True”/>
该诊断信息的行动是在实施DevExpress.ExpressApp.SystemModule.DiagnosticInfoController并包含在诊断行动容器。下图显示了各种模板上的诊断信息操作位置。
的WinForms:

ASP.NET:

该诊断信息的行动是一个SingleChoiceAction。单击此Action的项目时,将调用带有DiagnosticInfoObject_DetailView详细信息视图的对话框窗口。该DiagnosticInfoObject.AsText属性包含XML格式的信息。

分析DiagnosticInfo操作输出
以下是确定禁用操作的原因所需的步骤。
- 确定要调试的Action的标识符。如果在代码中实现了Action,请使用ActionBase.Id值。否则,请参阅确定操作的控制器和标识符主题,以了解如何获取内置或第三方操作的标识符。
- 单击诊断 | 操作信息并在输出XML中搜索操作标识符。
- 研究专门针对目标Action及其Controller的找到的XML元素。例如:
<Controller Name="OpenObjectController" FullName="DevExpress.ExpressApp.Win.SystemModule.OpenObjectController" Active="True">
<ActiveList>
<Item Key="View is assigned" Value="True" />
<Item Key="View type is ObjectView" Value="True" />
<Item Key="PropertyEditor has ObjectSpace" Value="True" />
</ActiveList>
<Actions>
<Action ID="OpenObject" Caption="Open Related Record" TypeName="SimpleAction" Category="OpenObject" Active="False" Enabled="True" AdditionalInfo="">
<ActiveList>
<Item Key="Controller active" Value="True" />
<Item Key="HasReadPermissionToTargetType" Value="True" />
<Item Key="DataViewMode" Value="False" />
</ActiveList>
</Action>
</Actions>
</Controller>
- 如果Controller或Action元素的Active或Enabled属性返回“False”,则研究嵌套的ActiveList和EnabledList元素下的每个单独项。每个属性的Key属性很快描述了原因标识符。这些嵌套项的所有Value属性的叠加形成父Action或其Controller 的结果Active或Enabled值。
DiagnosticInfo参考
选择“ 操作信息”项时在调用窗口中显示的信息包括以下内容。
|
部分 |
定义 |
|---|---|
| 模板 | 指定当前Window的上下文名称和Template的类型名称。 |
| 模板| DefaultActionContainer | 指定当前模板的默认操作容器的名称(请参阅 IFrameTemplate.DefaultContainer)。 |
| 模板| DefaultActionContainer | 操作 | 列出在默认操作容器中注册的操作(请参阅IActionContainer.Actions)。 |
| 模板| DefaultActionContainer | 行动| 行动 | 指定Action的ID(请参阅ActionBase.Id)。 |
| 模板| ActionContainers | 列出当前模板的Action Containers。 |
| 模板| ActionContainers | 容器 | 指定操作容器的名称。 |
| 模板| ActionContainers | 容器| 操作 | 列出在当前操作容器中注册的操作(请参阅IActionContainer.Actions)。 |
| 模板| ActionContainers | 容器| 行动| 行动 | 指定Action的ID(请参阅ActionBase.Id)。 |
| 控制器 | 列出加载到应用程序模型的所有控制器。 |
| 控制器| 调节器 | 指定Controller的名称和活动状态(请参阅Controller.Active)。 |
| 控制器| 控制器| ActiveList | 允许您将Controller.Active集合项的状态与预期状态进行比较。 |
| 控制器| 控制器| ActiveList | 项目 | 指定Controller.Active列表中项的键和值。 |
| 控制器| 控制器| 操作 | 列出当前Controller中包含的Actions(请参阅Controller.Actions)。 |
| 控制器| 控制器| 行动| 行动 | 指定以下操作详细信息。
|
| 控制器| 控制器| 行动| 行动| ActiveList | 允许您将ActionBase.Active集合项的状态与预期状态进行比较。 |
| 控制器| 控制器| 行动| 行动| ActiveList | 项目 | 指定ActionBase.Active列表中项的键和值。 |
| 控制器| 控制器| 行动| 行动| EnabledList | 允许您将ActionBase.Enabled集合项的状态与预期状态进行比较。 |
| 控制器| 控制器| 行动| 行动| EnabledList | 项目 | 指定ActionBase.Enabled列表中项的键和值。 |
| 控制器| 控制器| 行动| 行动| 项目(对于SingleChoiceAction类型的操作) | 列出ChoiceActionItem.Items集合中包含的项目。 |
| 控制器| 控制器| 行动| 行动| 项目| Item(对于SingleChoiceAction类型的Actions ) | 描述一个项目:其标题,活动和启用状态。如果该项具有嵌套项的集合(请参阅ChoiceActionItem.Items),则还会列出并描述它们。 |
| 控制器| 控制器| 行动| 行动| 项目| 项目| ActiveList(用于SingleChoiceAction类型的Actions ) | 允许您将ChoiceActionItem.Active集合项状态与预期状态进行比较。 |
| 控制器| 控制器| 行动| 行动| 项目| 项目| ActiveList | Item(对于SingleChoiceAction类型的Actions ) | 指定ChoiceActionItem.Active列表中项的键和值。 |
| 控制器| 控制器| 行动| 行动| 项目| 项目| EnabledList(用于SingleChoiceAction类型的Actions ) | 允许您将ChoiceActionItem.Enabled集合项的状态与预期状态进行比较。 |
| 控制器| 控制器| 行动| 行动| 项目| 项目| EnabledList | Item(对于SingleChoiceAction类型的Actions) | 指定ChoiceActionItem.Enabled列表中项的键和值。 |
选择“ 查看信息”项时,在调用窗口中显示的信息包括以下内容:
|
部分 |
定义 |
|---|---|
| 详细视图 | 描述当前视图。写入以下属性的值。 |
| DetailView | AllowNewList | 允许您将View.AllowNew集合项的状态与预期状态进行比较。 |
| DetailView | AllowNewList | 项目 | 指定View.AllowNew列表中项的键和值。 |
| DetailView | AllowEditList | 允许您将View.AllowEdit集合项的状态与预期状态进行比较。 |
| DetailView | AllowEditList | 项目 | 指定View.AllowEdit列表中项的键和值。 |
| DetailView | AllowDeleteList | 允许您将View.AllowDelete集合项的状态与预期状态进行比较。 |
| DetailView | AllowDeleteList | 项目 | 从View.AllowDelete列表中指定项的键和值。 |
| DetailView | 属性编辑器 | 列出当前视图中包含的属性编辑器。 |
| DetailView | PropertyEditors | 属性编辑器 | 描述属性编辑器: |
| DetailView | PropertyEditors | PropertyEditor | AllowEditList | 允许您将PropertyEditor.AllowEdit集合项的状态与预期状态进行比较。 |
| DetailView | PropertyEditors | PropertyEditor | AllowEditList | 项目 | 指定PropertyEditor.AllowEdit列表中项的键和值。 |
| 列表显示 | 描述当前的列表视图。写入以下属性的值: |
| ListView | AllowNewList | 允许您将View.AllowNew集合项的状态与预期状态进行比较。 |
| ListView | AllowNewList | 项目 | 指定View.AllowNew列表中项的键和值。 |
| ListView | AllowEditList | 允许您将View.AllowEdit集合项的状态与预期状态进行比较。 |
| ListView | AllowEditList | 项目 | 指定View.AllowEdit列表中项的键和值。 |
| ListView | AllowDeleteList | 允许您将View.AllowDelete集合项的状态与预期状态进行比较。 |
| ListView | AllowDeleteList | 项目 | 从View.AllowDelete列表中指定项的键和值。 |
| ListView | ListEditor | 描述当前列表视图的编辑器(请参阅ListEditor)。写入以下属性的值。 |
选择“规则信息”项时调用的窗口中显示的信息包括以下内容。
|
部分 |
定义 |
|---|---|
| 规则 | 列出应用程序模型中注册的所有验证规则。 |
有关操作的自定义诊断信息
您可以提供有关操作的自定义诊断信息。为此,请使用ActionBase.DiagnosticInfo属性。其值将分配给Controllers |中的AdditionalInfo项 控制器| 行动| 行动部分。在以下代码中,为SetProprityController的SetPriorityAction指定了DiagnosticInfo属性,该属性在MainDemo中实现(请参阅使用选项选择添加操作)):
|
|||
public partial class SetPriorityController:ViewController {
|
下面的诊断信息片段演示了在主窗口中显示联系人时SetPriorityController及其SetPriorityAction的状态。
<Controller Name="SetPriorityController"
FullName="MainDemo.Module.SetPriorityController" Active="True">
<ActiveList>
<Item Key="View is assigned" Value="True" />
<Item Key="Activating is allowed" Value="True" />
<Item Key="!ViewChanging.Cancel" Value="True" />
</ActiveList>
<Actions>
<Action ID="SetPriorityAction" TypeName="SingleChoiceAction"
Category="RecordEdit" Active="False" Enabled="True" AdditionalInfo="Hello!">
<ActiveList>
<Item Key="EmptyItems" Value="True" />
<Item Key="Controller active" Value="True" />
<Item Key="ObjectType" Value="False" />
<Item Key="HideActionsViewController" Value="True" />
</ActiveList>
<EnabledList>
<Item Key="EmptyItems" Value="True" />
<Item Key="ByContext_RequireMultipleObjects" Value="True" />
</EnabledList>
</Action>
</Actions>
</Controller>
该SetPriorityAction在主窗口激活被显示在任务时和上述的诊断信息证实该行动当前停用。
为什么 Action/ViewController/ProperttyEditor不可见或不可用?的更多相关文章
- href设置action绝对路径和相对路径
绝对路径: 示例: <a href="<%=basePath %>account/list.action"></a> 注意:这里${basePa ...
- 你真的了解UIControl吗?
一:首先查看一下关于UIControl的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIControl : UIView //控件默认是启用的YES.是否要禁用 ...
- Mapbox使用详解
一.简介: Mapbox致力于打造全球最漂亮的个性化地图. 在一次偶然的地图相关资料搜索过程中发现了一个很神奇又很漂亮的地图,这个地图支持高度自定义各种地图元素,比如,道路,水系,绿地,建筑物,背 ...
- iOS 从零到一搭建组件化项目框架
随着公司业务需求的不断迭代发展,工程的代码量和业务逻辑也越来越多,原始的开发模式和架构已经无法满足我们的业务发展速度了,这时我们就需要将原始项目进行一次重构大手术了.这时我们应该很清晰这次手术的动刀口 ...
- iOS组件化实践
参考资料: http://wereadteam.github.io/2016/03/19/iOS-Component/#more https://casatwy.com/iOS-Modulizatio ...
- iOS - Target-Action机制创建自己的UI控件需要了解的知识
我们在开发应用的时候,经常会用到各种各样的控件,诸如按钮(UIButton).滑块(UISlider).分页控件(UIPageControl)等.这些控件用来与用户进行交互,响应用户的操作.我们查看这 ...
- Cocoapods组件化之搭建组件化项目框架
一,概述 随着公司业务需求的不断迭代发展,工程的代码量和业务逻辑也越来越多,原始的开发模式和架构已经无法满足我们的业务发展速度了,这时我们就需要将原始项目进行一次重构大手术了.这时我们应该很清晰这次手 ...
- Webwork 学习之路【08】结合实战简析Controller 配置
虽然现在 MVC 框架层出不穷,但做为 Struts 前身的 webwork. 其经典程度不亚于贝利之于足球,双 11 之于淘宝特卖. 本篇将结合 webwork controller 配置文件 xw ...
- struts2环境配置
struts2环境配置 struts2框架,大多数框架都在使用.由于工作需要,开始做Java项目.先学个struts2. 一.下载struts2 有好多版本,我下载的是struts-2.2.1.1. ...
随机推荐
- (转)如何安装 easy installer+pip
http://blog.csdn.net/wuxiaobingandbob/article/details/42457807
- spring4声明式事务—02 xml配置方式
1.配置普通的 controller,service ,dao 的bean. <!-- 配置 dao ,service --> <bean id="bookShopDao& ...
- 【2017-11-19】Linux基础知识:TP-Link WN823N无线网卡(RTL8192EU芯片)的X86-64及AARCH64驱动安装
目的: 使类似于树莓派的AARCH-64架构的嵌入式设备能通过USB无线网卡连接上以太网: 该设备有LAN接口,但在前一次系统固件升级后,其内部的三个网络接口可以相互ping通,但任一接口无法ping ...
- 关于移动端APP开发-字体样式变大问题
前两天在写App项目的时候发现一个问题,就是明明css写的样式是14px,刚开始在页面显示时并未出现问题,可是内容一多,字体突然变大了. what?,不明所以,在各大网站上找了好久才知道是浏览器的字体 ...
- C语言利用 void 类型指针实现面向对象类概念与抽象。
不使用C++时,很多C语言新手可能认为C语言缺乏了面向对象和抽象性,事实上,C语言通过某种组合方式,可以间接性的实现面对对象和抽象. 不过多态和继承这种实现,就有点小麻烦,但是依然可以实现. 核心: ...
- luogu P4199 万径人踪灭
嘟嘟嘟 方案:回文子序列数 - 回文子串数. 回文子串数用manacher解决就行了,关键是怎么求会问序列数. 一个比较好的\(O(n ^ 2)\)的算法:对于一个回文中心\(i\),\(O(n)\) ...
- HBase学习之路 (九)HBase phoenix的使用
HBase phoenix的下载 下载地址http://mirror.bit.edu.cn/apache/phoenix/ 选择对应的hbase版本进行下载,测试使用的是hbase-1.2.6版本
- Hadoop学习之路(十七)MapReduce框架Partitoner分区
Partitioner分区类的作用是什么? 在进行MapReduce计算时,有时候需要把最终的输出数据分到不同的文件中,比如按照省份划分的话,需要把同一省份的数据放到一个文件中:按照性别划分的话,需要 ...
- [luogu1081] 开车旅行
题面 这个题目还是值得思考的. 看到这个题目, 大家应该都想到了这样一个思路, 就是把每个点能够达到的最近的和次近的点都预处理出来, 然后跑就可以了, 现在问题就是难在这个预处理上面, 我们应 ...
- 预备作业二——有关CCCCC语言(・᷄ᵌ・᷅)
有关CCCCC语言(・᷄ᵌ・᷅) 下面又到了回答老师问题的时候啦-(・᷄ᵌ・᷅) 有些问题正在深思熟虑中!敬请期待近期的不间断更新! 你有什么技能比大多人(超过90%以上)更好? 针对这个技能的获取你 ...