我之前从未使用过Silverlight,但我需要构建一个相当动态/交互的表单来填写。这使我在两种我没有太多经验的技术之间做出选择:JavaScript / jQuery或Silverlight。 (编辑:应用程序是内部的,我可以放心地假设Silverlight可用)
最后,我需要将一些数据提交回服务器。我知道在ASP.net中使用普通的HTTP表单我可以有一个Button和一个onClick事件 - 标准的东西。 JavaScript方法将包括一些DOM操作来动态添加/删除字段,但是当我点击按钮时,当前的DOM将被提供给我的ASP.net应用程序并且我正常处理。它仍然是一个普通的WebForms应用程序。
但是,如何与Silverlight进行交互?我可以在Silverlight应用程序中使用基本上POST HTTP表单的按钮吗?或者我会使用Web服务吗?如果Silverlight应用程序可以从服务器获取一些数据会很棒,所以我猜它是一个Web服务呢?
答案 0 :(得分:2)
听起来好像您正在寻求使用Silverlight的Web服务。该框架相对强大且易于实施 - 一旦您深入了解它就可以让您的Web服务快速启动并运行。
http://silverlight.net/getstarted/
虽然你可以让你的Silverlight应用程序发布它周围的HTTP表单,但你需要确保这是你问题的正确实现路径。
答案 1 :(得分:2)
我不知道如何编写任何JQuery,但我知道Silverlight。我想说如果你想要的只是一个表单Silverlight会有点矫枉过正,你可能会用JQuery之类的东西做得更好。
但是,既然您了解C#,那么为了节省时间,最好选择更接近您所知道的东西。如果我要写它,我会选择Silverlight,ADO.Net实体模型和RIA服务。使用Silverlight Dataform可以非常快速地创建一个非常动态的表单,甚至可以通过简单的验证来保持数据的清洁。
对于布拉德艾布拉姆斯来说,check here发布了这个帖子。
答案 2 :(得分:2)
如果您想通过点击按钮进行表单发布,可以通过Silverlight执行此操作。
在托管Silverlight控件的aspx页面中添加一个div,在我的示例中我称之为formDiv。变量formData是您创建的要发布的表单。
var doc = HtmlPage.Document;
var el = doc.GetElementById("formDiv");
el.SetProperty("innerHTML", formData);
try
{
el.Children[0].Invoke("submit");
}
catch (Exception)
{
throw new LogicException("Error launching post");
}
答案 3 :(得分:2)
我建议您尝试使用Silverlight来了解该环境的强大程度。就个人而言,我认为jQuery很不错,但是如果你使用Silverlight,你会获得更加可控和丰富的环境。
HtmlPage
对象访问浏览器DOM以提交表单。WebClient
或HttpWebRequest
对象。 Silverlight 3有两个HTTP堆栈,默认是使用浏览器堆栈,确保在您的请求中使用浏览器cookie(例如表单身份验证cookie)。答案 4 :(得分:1)
是的,你可以在Silverlight应用程序中使用按钮,它将像ASP.net Form一样进入服务器。只有我们可以利用Silverlight的.net框架元素(虽然以有限的方式)。它是相同的模型。
答案 5 :(得分:1)
到目前为止,我无法相信每个人都支持你的Silverlight建议。请改用jquery!您可以创建一个非常动态的表单,并保证您可以通过各种平台访问用户。我是一名Web开发人员,我没有安装Silverlight运行时。我强烈建议使用jQuery!
答案 6 :(得分:1)
Silverlight是一个功能强大的工具,但根据所需的动态级别,阻力最小的路径可能只是创建一个ASP.NET页面并使用jQuery使其更具动态性。
如果你使用jQuery,你将学习Javascript和jQuery库。如果您使用Silverlight,您将学习WPF,WCF以及它们与.NET服务器代码的交互。
如果您已经在ASP.NET中构建了站点,那么使用jQuery路由就是80%。如果你走Silverlight路线,我认为学习曲线会更陡峭。
如果你继续使用Silverlight选项,Tim Heuer有一些communicating from Silverlight to Asp.net web services的例子。
答案 7 :(得分:1)
鉴于您的项目是内部的,并且鉴于您可以确保Silverlight已安装,并且鉴于您的所有选择都可以提供您想要的内容,那么答案似乎是偏好或痒(您个人想要玩的)。 / p>
您没有给出项目截止日期。使用Silverlight,如果你想要一个RIA设计师般的结果,你很可能需要Blend(如果你有权访问就没有提到),那么你将不得不花费一些时间来学习如何使用混合(多少努力取决于你的RIA需要多少)。
我看到它崩溃了:
Webservices:如果你刚刚开始新手,你应该使用RIA或WCF,除非你有充足的理由使用网络服务(比如它已经存在,你别无选择,等等)。
WCF:替换网络服务,但是,您经常需要自己构建大量的管道。
RIA:旨在为Silverlight实施数据服务(预计将来会扩展到包括ASPX)。 RIA Services还没有进入测试阶段。您应该记住,可能会有重大变化,并且在您解决这些变化对您的公司造成过度影响之前,应用程序是否会无法运行?
您在没有说明理由的情况下遗漏了ASPX。这可能是你对动态的看法与许多不同。我不得不怀疑ASPX和AJAX(假设你甚至需要AJAX)不能最好地解决你的问题。
jQuery当然可以完成这项任务,所以球就在你的球场上。你有多少时间,想要学习什么,你真正想要/需要的动态是什么?
解决这一步中的其他一些问题。 Silverlight学习不一定非常陡峭。如果您没有学习动画,那么Blend IDE可能是最耗时的部分。事实上,如果你主要使用VS代码,那么Blend将主要用于布局。对于简单的RIA,您甚至可以跳过Blend(但我不会建议这样做)。
最后,您可能会考虑制定一些规范(行为/设计/数据库),然后询问人们会使用什么。
答案 8 :(得分:1)
简而言之,它通过Silverlight WCF客户端实现使用Web服务,Silverlight提供了一些访问Web服务的方法。
“Hot”新内容为.net RIA services,此处为tutorial您还应该查看Brad Abram's blog,他有很多关于它的信息。
< / LI> 醇>silverlight.net视频也很棒,有几个例子。