我以前从未使用过 Silverlight,但我需要构建一个相当动态/交互式的表单来填写。这让我在两种我没有太多经验的技术之间做出选择:JavaScript/jQuery 或 Silverlight。 (编辑:应用程序是内部的,我可以安全地假设 Silverlight 可用)
最后,我需要将一些数据提交回服务器。我知道在 ASP.net 中使用普通的 HTTP 表单我可以有一个按钮和一个 onClick 事件——标准的东西。 JavaScript 方法将包括一些 DOM 操作以动态添加/删除字段,但是当我单击按钮时,当前 DOM 将提供给我的 ASP.net 应用程序并且我可以正常处理。它仍然是一个普通的 WebForms 应用程序。
但是交互将如何与 Silverlight 一起工作?我可以在 Silverlight 应用程序中有一个基本上发布 HTTP 表单的按钮吗?或者我会为此使用 Web 服务吗?如果 Silverlight 应用程序可以从服务器取回一些数据,那就太好了,所以我猜这是一个 Web 服务?
最佳答案
我建议您试用 Silverlight 以感受该环境的强大程度。我个人认为 jQuery 不错,但如果您使用 Silverlight,您将获得一个更加可控和丰富的环境。
- 假设您使用的是 Visual Studio 2008 下载 Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1。这将使您能够在 Visual Studio 中创建 Silverlight 项目。您也可以使用 Expression Blend 来编写 Silverlight 应用程序,但只要您习惯于在没有可视化设计器的情况下编写 XAML,您可能会发现从开发人员的角度来看 Visual Studio 更成熟一些。
- 如果您愿意,可以试试 Microsoft .NET RIA Services July 2009 Preview 。这是一个非常强大的环境,使您的 Silverlight 应用程序能够与 ASP.NET 服务器上的数据模型无缝协作。特别是与 LINQ to SQL 和 ADO.NET Entity Framework 的集成非常好。但是,如果您是 Silverlight 的新手,您可能会发现学习曲线有点陡峭。您必须加载查询操作才能异步执行它们等。查看下载位置的 Word 文档以帮助您入门。
- 正如其他人所建议的那样,您可以简单地在承载 Silverlight 控件的网页中隐藏 HTML 表单,然后使用 Silverlight 中的
HtmlPage
对象访问浏览器 DOM 以提交您的表单。< - 如果您想在 Silverlight 中执行 POST 操作而不使用 .NET RIA 服务或 WCF 等 Web 服务框架,您可以使用
WebClient
或HttpWebRequest
对象。 Silverlight 3 有两个 HTTP 堆栈,默认情况下使用浏览器堆栈,确保在您的请求中使用浏览器 cookie(例如表单例份验证 cookie)。 - 您的表单具有复杂的交互逻辑,我强烈建议您了解一下 MVVM 模式。在 Silverlight 中,您创建一个包含表单所有相关数据的 View 模型。相关数据不仅包括表单中字段的值,还包括有关启用了哪些控件的信息、选择信息(如果适用)等。然后,您将表单( View )数据绑定(bind)到 View 模型并通过实现
INotifyPropertyChanged
在 View 模型中,即使不是免费的,您也会获得复杂的交互逻辑,至少以一种合理且易于开发人员处理的方式。在 .NET RIA 服务中为您生成的部分客户端类特别适合 View 模型,这使得在该框架内应用 MVVM 模式变得简单。
关于.net - Silverlight 与 Web 服务器的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520933/