看了微软的UIP例子
有点收获
1 先写 config配置文件
<navigationGraph
iViewManager="WebFormViewManager"
name="Shopping"
state="State"
statePersist="SqlServerPersistState"
startView="browsecatalog"
cacheExpirationMode="Absolute"
cacheExpirationInterval="12:00:00">
<node view='cart'>
<navigateTo navigateValue="resume" view='browsecatalog' />
<navigateTo navigateValue="checkout" view='checkout' />
<navigateTo navigateValue="fail" view='error' />
<navigateTo navigateValue="stop" view='logon'/>
</node>
<node view='browsecatalog'>
<navigateTo navigateValue="addItem" view="cart"/>
<navigateTo navigateValue="fail" view='error' />
</node>
<node view='error'>
<navigateTo navigateValue="resume" view='cart' />
</node>
<node view="checkout">
<navigateTo navigateValue="congratulations" view="congratulations" />
<navigateTo navigateValue="failCheckout" view="checkout" />
</node>
<node view='congratulations'>
<navigateTo navigateValue="resume" view='cart' />
<navigateTo navigateValue="stop" view='cart' />
</node>
</navigationGraph>
iViewManager="WebFormViewManager"
name="Shopping"
state="State"
statePersist="SqlServerPersistState"
startView="browsecatalog"
cacheExpirationMode="Absolute"
cacheExpirationInterval="12:00:00">
<node view='cart'>
<navigateTo navigateValue="resume" view='browsecatalog' />
<navigateTo navigateValue="checkout" view='checkout' />
<navigateTo navigateValue="fail" view='error' />
<navigateTo navigateValue="stop" view='logon'/>
</node>
<node view='browsecatalog'>
<navigateTo navigateValue="addItem" view="cart"/>
<navigateTo navigateValue="fail" view='error' />
</node>
<node view='error'>
<navigateTo navigateValue="resume" view='cart' />
</node>
<node view="checkout">
<navigateTo navigateValue="congratulations" view="congratulations" />
<navigateTo navigateValue="failCheckout" view="checkout" />
</node>
<node view='congratulations'>
<navigateTo navigateValue="resume" view='cart' />
<navigateTo navigateValue="stop" view='cart' />
</node>
</navigationGraph>
这里就可以看出程序的导航路径了
2 真正控制导航的地方
比如web 页面有个按钮 点击的时候 对应代码如下
StoreControllerNavGraph.AddToCart(productID, 1);
就是 this.controler.addtocart
具体this.controler 就是上面 配置程序中给出的这个页面的控制器了
<view name="cart" type="cart.aspx" controller="StoreControllerNavGraph" />
3 看看内部代码
base.AddToCart(productId,quantity);//执行具体的数据库也较商业逻辑操作-没什么别的
this.State.NavigateValue = "addItem";
this.State.Save(); //Stores the state using the persistence provider related to this state.
Navigate();//执行导航了
this.State.NavigateValue = "addItem";
this.State.Save(); //Stores the state using the persistence provider related to this state.
Navigate();//执行导航了