.net - Silverlight 与 Web 服务器的交互

标签 .net asp.net silverlight

我以前从未使用过 Silverlight,但我需要构建一个相当动态/交互式的表单来填写。这让我在两种我没有太多经验的技术之间做出选择:JavaScript/jQuery 或 Silverlight。 (编辑:应用程序是内部的,我可以安全地假设 Silverlight 可用)

最后,我需要将一些数据提交回服务器。我知道在 ASP.net 中使用普通的 HTTP 表单我可以有一个按钮和一个 onClick 事件——标准的东西。 JavaScript 方法将包括一些 DOM 操作以动态添加/删除字段,但是当我单击按钮时,当前 DOM 将提供给我的 ASP.net 应用程序并且我可以正常处理。它仍然是一个普通的 WebForms 应用程序。

但是交互将如何与 Silverlight 一起工作?我可以在 Silverlight 应用程序中有一个基本上发布 HTTP 表单的按钮吗?或者我会为此使用 Web 服务吗?如果 Silverlight 应用程序可以从服务器取回一些数据,那就太好了,所以我猜这是一个 Web 服务?

最佳答案

我建议您试用 Silverlight 以感受该环境的强大程度。我个人认为 jQuery 不错,但如果您使用 Silverlight,您将获得一个更加可控和丰富的环境。

  1. 假设您使用的是 Visual Studio 2008 下载 Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1。这将使您能够在 Visual Studio 中创建 Silverlight 项目。您也可以使用 Expression Blend 来编写 Silverlight 应用程序,但只要您习惯于在没有可视化设计器的情况下编写 XAML,您可能会发现从开发人员的角度来看 Visual Studio 更成熟一些。
  2. 如果您愿意,可以试试 Microsoft .NET RIA Services July 2009 Preview 。这是一个非常强大的环境,使您的 Silverlight 应用程序能够与 ASP.NET 服务器上的数据模型无缝协作。特别是与 LINQ to SQL 和 ADO.NET Entity Framework 的集成非常好。但是,如果您是 Silverlight 的新手,您可能会发现学习曲线有点陡峭。您必须加载查询操作才能异步执行它们等。查看下载位置的 Word 文档以帮助您入门。
  3. 正如其他人所建议的那样,您可以简单地在承载 Silverlight 控件的网页中隐藏 HTML 表单,然后使用 Silverlight 中的 HtmlPage 对象访问浏览器 DOM 以提交您的表单。<
  4. 如果您想在 Silverlight 中执行 POST 操作而不使用 .NET RIA 服务或 WCF 等 Web 服务框架,您可以使用 WebClientHttpWebRequest 对象。 Silverlight 3 有两个 HTTP 堆栈,默认情况下使用浏览器堆栈,确保在您的请求中使用浏览器 cookie(例如表单例份验证 cookie)。
  5. 您的表单具有复杂的交互逻辑,我强烈建议您了解一下 MVVM 模式。在 Silverlight 中,您创建一个包含表单所有相关数据的 View 模型。相关数据不仅包括表单中字段的值,还包括有关启用了哪些控件的信息、选择信息(如果适用)等。然后,您将表单( View )数据绑定(bind)到 View 模型并通过实现 INotifyPropertyChanged 在 View 模型中,即使不是免费的,您也会获得复杂的交互逻辑,至少以一种合理且易于开发人员处理的方式。在 .NET RIA 服务中为您生成的部分客户端类特别适合 View 模型,这使得在该框架内应用 MVVM 模式变得简单。

关于.net - Silverlight 与 Web 服务器的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520933/

相关文章:

c# - 不需要分配结构类型的 out 参数

c# - 服务激活异常 : Request cannot be dispatched because the virtual application is shutting down

silverlight - WCF Silverlight 服务返回自定义错误,但作为 HTTP 500 响应而不是 200

c# - 转发/中继 .NET 事件

c# - Azure 移动服务 - 通过自定义参数传递数组

asp.net - 您实际可以保存多少应用程序 session 数据?

javascript - 在 Web 应用程序 MVC 的后台操作中执行 javascript 代码

c# - 右键单击 Silverlight Datagrid 选择

silverlight - 在 PagedCollectionView 中隐藏和重新排序列

.net - 如何实现干净的代码隐藏文件?