2010-04-13 71 views
0

我真的很喜欢flex状态框架。您为控件定义了一些状态,然后可以将子控件设置为仅在某些状态下出现。看看这个代码:创建类似于Flex状态的ASP.NET web表单的框架

<s:states> 
    <s:State name="signin"/> 
    <s:State name="register"/> 
</s:states> 

<mx:FormItem label="Last name:" includeIn="register" id="lastNameItem" alpha="0.0"> 
    <s:TextInput id="lastName" width="220"/> 
</mx:FormItem> 

现在的姓氏形式只会出现在注册屏幕上。这在.NET中会非常有用,您可以在页面中使用update/insert等视图。我正在考虑将Page元素扩展为使用扩展方法的states属性,并将include添加到控件中。这样我可以在渲染时基于当前视图自动隐藏控件。

Flex中更酷的是,您可以根据当前状态使用不同的处理程序/属性。

<s:Button label="Sign in" label.register="Register" id="loginButton" 
     enabled="true" click.signin="signin()" click.register="register()"/> 

我确定有一种方法可以实现类似于此的方法。

您认为这是一个好主意吗?或者它是否仅仅为框架添加了一个抽象级别,而这个抽象级别已经有很差的关注点分离了?

回答

0

States范式是一个很好的范例,并且在WPF应用程序中以类似的方式存在。 ASP.NET和Flash/Flex之间的重要区别在于ASP.NET是一个基于HTTP的框架。

我可以设想一个基于JavaScript的框架,它可以模仿一个基于状态的页面,但它的应用程序可能有限,因为您不想将太多的UI包装到单个网页中。这将是一个真正的带宽生猪,并会更加分散关注。

如果它是你正在寻找的问题的分离,ASP.NET MVC可能值得研究。