【问题标题】:Passing a XML parsed list from a controller to a view in ASP.NET MVC将 XML 解析列表从控制器传递到 ASP.NET MVC 中的视图
【发布时间】:2009-01-05 05:17:14
【问题描述】:

我正在尝试将 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 数据控制器吗?

【问题讨论】:

    标签: c# asp.net-mvc xml


    【解决方案1】:

    首先..您必须将数据返回到视图模式...

    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&lt;XElement&gt;。 并且您将能够像在控制器中一样使用数据。

    【讨论】:

    • 你如何从我的代码继承viewPage?你的意思是返回视图(项目)而不是视图(m)?
    【解决方案2】:

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

    ViewData["XmlItems"] = items;
    

    然后在你看来你打电话

    <% foreach(XElement e in ViewData["XmlItems"] as IEnumerable<XElement>) { %>
        <!-- do work here -->
    <% } %>
    

    【讨论】:

    • 谢谢,我不知道您可以传递项目列表查看视图数据。哎呀。像我想的那样愚蠢!!!
    【解决方案3】:

    我猜你错过了一些代码,因为你没有在这段代码的任何时候将项目分配给 ViewData。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多