如果我有以下导航规则:
<navigation-rule>
<from-view-id>Mainview</from-view-id>
<navigation-case>
<from-outcome>outcome1</from-outcome>
<to-view-id>view1</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>outcome2</from-outcome>
<to-view-id>view2</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>outcome3</from-outcome>
<to-view-id>view3</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
如果整个流程没有任何验证错误,一切都会正常工作。那就是:
步骤1)MainForm中的方法返回outcome1呈现view1 步骤2)view1中的方法返回result2渲染view2 步骤3)view2中的方法返回outcome3呈现view3
请注意,上述规则中没有重定向,这意味着浏览器会在浏览器窗口中显示主视图。
如果在上面的第2步,验证失败,那么浏览器将不会显示view2,而是会在地址栏中显示view1。
现在,对于下一个流程(一旦验证成功),起点将不是Mainview但是view1意味着必须写入导航案例 with view1
如何处理?我们需要编写另一组导航规则吗?或者像上面那样设计导航规则是完全错误的?
答案 0 :(得分:0)
查看specification,我们必须得出结论,每个<from-view-id>
只能有一个<navigation-rule>
标记。
from-view-id:包含完整页面标识符(页面的上下文敏感相对路径)或以星号(*)通配符结尾的页面标识符前缀的可选元素。如果使用通配符,则该规则适用于与通配符模式匹配的所有页面。要制作适用于所有页面的全局规则,请将此元素留空。
将此标记作为可选项,您可以指定或不指定 - 您还可以指定通配符视图ID,因此导航大小写覆盖与模式相关的每个视图ID - 但您只能为每个规则指定一个。 因此,对于您的情况,您有以下选择:
view1
开始的导航案例。使用模式覆盖您的视图ID,并使用通配符对它们进行分组(命名您的第一页 view0 ):
<navigation-rule>
<from-view-id>view*</from-view-id>
<navigation-case>
<from-outcome>outcome1</from-outcome>
<to-view-id>view1</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>outcome2</from-outcome>
<to-view-id>view2</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>outcome3</from-outcome>
<to-view-id>view3</to-view-id>
<redirect/>
</navigation-case>
from-view-id
并让它适用于您实际所在的每个view-id
。当您为每个案例使用不同的结果时,您将不会遇到任何问题。