代码之家  ›  专栏  ›  技术社区  ›  bdd

将XML解析的列表从控制器传递到ASP.NET MVC中的视图

  •  4
  • bdd  · 技术社区  · 15 年前

    我正试图将XML列表传递给视图,但一旦到达该视图,就会遇到问题。

    我的控制器:

     public ActionResult Search(int isbdn)
        {
            ViewData["ISBN"] = isbdn;
            string pathToXml= "http://isbndb.com/api/books.xml?access_key=DWD3TC34&index1=isbn&value1=";
            pathToXml += isbdn;
            var doc = XDocument.Load(pathToXml);
            IEnumerable<XElement> items = from m in doc.Elements()
                        select m;
    

    我的视图是什么样的?我需要合并某种类型的XML数据控制器吗?

    3 回复  |  直到 7 年前
        1
  •  3
  •   Moran Helman    15 年前

    第一。。您必须将数据返回到视图模式…

    public ActionResult Search(int isbdn)
        {
            ViewData["ISBN"] = isbdn;
            string pathToXml= "http://isbndb.com/api/books.xml?access_key=DWD3TC34&index1=isbn&value1=";
            pathToXml += isbdn;
            var doc = XDocument.Load(pathToXml);
            IEnumerable<XElement> items = from m in doc.Elements()
                        select m;
    return view(m);
    }
    

    在你的代码背后,你必须继承

    ViewPage < IEnumerable<XElement>>
    

    而不是您的viewData.modal将是一个强类型 IEnumerable<XElement> . 您将能够像在控制器中那样使用数据。

        2
  •  3
  •   Nick Berardi    15 年前

    我不知道您是否有意在方法的中途切断代码。但是,您应该能够执行以下操作,将元素从控制器操作获取到视图:

    ViewData["XmlItems"] = items;
    

    然后在你看来你打电话给

    <% foreach(XElement e in ViewData["XmlItems"] as IEnumerable<XElement>) { %>
        <!-- do work here -->
    <% } %>
    
        3
  •  0
  •   Glenn Slaven    15 年前

    我猜您遗漏了一些代码,因为您没有在代码中的任何时候将项分配给视图数据。

    当您尝试访问视图中的项目时,会发生什么情况?您可以从视图中添加代码以显示您正在尝试执行的操作吗?