在ASP.Net MVC5中的视图上显示XML文件

时间:2014-09-23 14:51:10

标签: c# asp.net xml asp.net-mvc asp.net-mvc-5

对于asp.net MVC 5我是比较新的,我试图显示xml文件的内容(位于我项目的内容文件夹中以方便访问)并显示内容简单的看法。来自我的控制器,模型类和视图的代码低于.....

我得到的错误如下

  

传递到字典中的模型项的类型为' System.Collections.Generic.List 1[System.Xml.Linq.XElement]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [XML_v1._0.Models.XML_details]'。


我的控制器,模型类和视图的代码如下.....

视图



@model IEnumerable<XML_v1._0.Models.XML_details>


}
<head>
    <title></title>
    <style>
        th {
            font-size: 300%;
        }

        td {
            font-size: 300%;
        }
    </style>


</head>
<h2>Line Status</h2>
<div>
    <table>
        <tr>

            <th>
                @Html.DisplayNameFor(model => model.Line)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Status)
            </th>


        </tr>

        @foreach (var item in Model)
        {

            <tr>

                <td>
                    @Html.DisplayFor(modelItem => item.Line)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Status)
                </td>
   
            </tr>
        }

    </table>
</div>
&#13;
&#13;
&#13;

控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using XML_v1._0.Models;
using System.Xml.Linq;
using System.Xml;
using System.Text;
using System.Collections;
using System.Dynamic;


namespace XML_v1._0.Controllers
{
    public class HomeController : Controller
    {
       public ActionResult Index()
        {
            XDocument L_tube = XDocument.Load(@"C:\Users\070339\Documents\Visual Studio 2013\Projects\Learning and practice\XML v1.0\XML v1.0\Content\tube.xml");
            var train = from s in L_tube.Descendants() select s;


            var model = train.ToList();

            return View(model);
        }
    }
}

模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml;

namespace XML_v1Models
{
    public partial class  XML_details
    {
        public XmlElement Line { get; set; }
        public XmlElement Status { get; set; }
    }
}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

当你在控制器中执行return view()时,你应该传递一个IEnumerable<XML_v1._0.Models.XML_details>类型的变量。所以基本上你的控制器会 执行以下操作

IEnumerable<XML_v1._0.Models.XML_details> model = (from s in
 L_tube.Descendants() select s);

然后执行

return View(model);