【问题标题】:How do I send an XML document to an ASP.NET MVC page for manipuation如何将 XML 文档发送到 ASP.NET MVC 页面进行操作
【发布时间】:2010-03-27 23:00:45
【问题描述】:
我有一些分层数据根据供应商的架构存储为服务器上的多个 XML 文件。在我的 ASP.NET MVC (2!) 应用程序中,我希望用户选择这些层次结构之一(即文件——我在控制器的索引操作中提供了一个列表)。当用户选择一个“编辑”时,我的编辑操作应该返回一个显示 XML 层次结构的页面(它是文件夹树的表示)。所以我的想法是,视图将返回包含 JQuery on load ajax 调用的 HTML 到服务器以获取 XML 数据——此时我将使用许多 JQuery 树控件之一呈现树。在客户端,我希望用户操作树,完成后,我想发回新的层次结构,我将在其中替换代表该层次结构的原始 XML 文件。
所以我的问题是:
我应该使用什么表格来发送数据? XML 还是 JSON?如果我发送 XML,那么我不仅要读取 XML(JQuery 可以这样做),而且我还必须能够修改该 XML,然后将其发回。我可以使用 JQuery 来修改这个 XML DOM 吗?是否会保留所有命名空间声明?
我应该以什么形式发回数据?如果我最初将层次结构作为 JSON 发送给客户端(使用 JsonResult),那么大概我会有一个 javascript 对象的层次结构。我必须有哪些选择才能将其发回?我是否必须在客户端上重新创建 XML 表示并将其发回?还是我应该序列化回 JSON,将其发布到服务器,然后让服务器根据架构重新创建 XML。
感谢您的建议。
【问题讨论】:
标签:
jquery
asp.net-mvc
xml
json
architecture
【解决方案1】:
嗯,好问题,假设我理解正确。
这个问题实际上取决于您最终使用的jQuery 层次树插件以及呈现树所需的输入类型。您能否列出(带有链接)潜在候选人?
不过,这是我的看法:
“ChooseXMLToEditPage”上的下拉列表,每个下拉列表都指向一个特定的 XML file name。
此页面上的提交按钮将发布到一个动作,该动作将从服务器获取 XML 文件,然后对其进行解析以满足 jQuery 插件的输入要求,并返回包含解析数据的视图。如果您不想在 HTML 源代码中插入数据,您可以使用 AJAX 获取此信息,但重要的部分是将其解析为 jQuery 插件的规范。
当用户完成对树的编辑后,查看您的 jQuery 插件可以使用哪些信息。也许它返回 XML,也许是 JSON。如果它返回任何一个,将它们解析为正确的架构应该不会太难,在服务器端执行此操作,因为 C#/VB.NET 更强大。
如果 jQuery 插件不返回 XML 或 JSON,则使用 jQuery,获取树的原始 HTML,将其发布到 action 并使用某种类型的 HTML 库将其解析为 XML(查看Html Agility Pack,或者如果您更喜欢使用Regular Expression to Parse HTML)。
同样,这完全依赖于 jQuery 插件。但归根结底,jQuery 插件会为您提供某种类型的输出,这些输出可以被解析以匹配您的架构。