【问题标题】:Returning RDF from Controller Action - ASP.NET MVC从控制器操作返回 RDF - ASP.NET MVC
【发布时间】:2010-12-12 21:02:56
【问题描述】:

我有一个控制器动作,它将一个 RDF 文档作为 XML 返回给浏览器。浏览器报错文档无法显示:

命名空间前缀不允许以保留字符串“xml”开头。错误处理资源

我试图使用 MCVContrib 的 XMLResult 对象将文档写入响应流。我怎样才能让这个文档在浏览器中正确显示?我必须求助于编写纯字符串吗?

 public ActionResult Content(string id, string version, string localization)
    {
        IDocumentRequest request = new ResourceRequest()
                                       {
                                           Id = id,
                                           Localization = Localization.GetByName(localization),
                                           Version = version
                                       };

        XmlDocument doc = _kbModel.GetContent(request);

        return new XmlResult(doc);
    }

【问题讨论】:

  • 您是否正在寻找一种在 MVC 中显示 ActiveReports 报告的方法?
  • 它明确指出命名空间包含“xml”术语 (support.microsoft.com/kb/262585).. 只需在 GetContent 方法中查看您的源代码并将该前缀替换为其他内容。
  • RDF 格式正确并在 FF 中按预期显示。

标签: c# .net asp.net-mvc rdf mvccontrib


【解决方案1】:

RDF 有不同的 MIME 类型,这要归功于 XML。 XMLResult 会将 MIME 类型设置为“application/xml”,RDF 需要的是“application/rdf+xml”。您需要设置本手册,或者您可以创建自己的 ActionResult 来设置它。

查看:http://www.w3.org/TR/rdf-syntax-grammar/#section-MIME-Type

【讨论】:

    【解决方案2】:

    您在返回文档的根目录中有一个 xml namespace (as 'xmlns:xml="..."')

    您正在使用旧的 Microsoft XML (MSXML) 解析器等于 Microsoft XML Core Services version 4.0 或更低。 更新last version of MSXML

    原因:您在返回的 XML 文档的命名空间前缀中使用了一个/一些 Microsoft XML (MSXML) 关键字,即xml

    例如,您在返回的 xml 文档中有一个类似 xmlMyProject 的命名空间。请注意,xml 大小写无关紧要,即XMLMyProjectXmlMyProject...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 2011-08-22
      相关资源
      最近更新 更多