如何显示要查看的对象列表

时间:2018-01-07 00:58:51

标签: c# html

我的模型类

 public class DisplaceModel
    {
        public string Name { get; set; }
        public string Address { get; set; }
        public string Type { get; set; }
        public string Rating { get; set; }
        public string PhotoReference { get; set; }
        public int Width { get; set; }
        public int Height { get; set; }
    }

public class DisplaceModelInformation
    {
        public List<DisplaceModel> Dispaylist { get; set; }
        public DisplaceModelInformation()
        {
            Dispaylist = new List<DisplaceModel>();
        }
     }

和我的控制器

var Display = new DisplaceModelInformation();
            XElement generalElement = xdoc1.Element("PlaceSearchResponse");
            Display.Dispaylist = (from c in xdoc1.Descendants("result")
                       select new DisplaceModel()
                        {
                            Name = Convert.ToString(c.Element("name").Value),
                            Address = Convert.ToString(c.Element("vicinity").Value),
                            Type = keyword,
                            Rating = (c.Element("rating") != null  ? Convert.ToString(c.Element("rating").Value) :null),
                            PhotoReference = (c.Element("photo") != null ? Convert.ToString(c.Element("photo").Element("photo_reference").Value) : null),
                            Width = (c.Element("photo") != null ? Convert.ToInt16(c.Element("photo").Element("width").Value) : 0),
                            Height = (c.Element("photo") != null ? Convert.ToInt16(c.Element("photo").Element("height").Value) : 0)
                        }).ToList<DisplaceModel>();

            return View(Display);

现在我尝试显示我要查看的对象列表,我试过但我真的不知道如何在mvc视图(cshtml)文件中显示

我的MVC视图

@model IEnumerable<FindLocation.Models.DisplaceModelInformation>

@using (Html.BeginForm())
{
    <table>
        <tbody>
            <tr>
                <th>NAME</th>
                <th>ADDRESS</th>
                <th>RATING</th>
            </tr>

            @foreach (var element in Model)
            {
                if (element.Dispaylist.Count > 0 )
            {
                <tr>
                    <@*td>@element.Dispaylist from c </td>
                    <td>@Display.Address</td>
                    <td>@Display.Rating</td>*@
                </tr>
            }
            }
        </tbody>
    </table>

我是UI的新手,我尝试提取对象列表,但我不知道如何列出对象。所以请帮助我......并感谢您的帮助

2 个答案:

答案 0 :(得分:0)

部分问题可能来自于您从控制器(DisplaceModelInformation)传递给视图的内容与视图本身中的@model定义之间的类型差异({{1} })。改变一个以匹配另一个应该有帮助。

我认为你对IEnumerable<DisplaceModelInformation>有正确的想法。如果您的模型是@foreach,则需要首先迭代该集合,然后在另一个内循环中迭代IEnumerable集合。

以下问题的答案似乎有一些很好的例子,说明你要完成的任务: Foreach in a Foreach in MVC View

答案 1 :(得分:0)

您的代码中存在两个问题:

  1. 在您的控制器中,您需要return View(new List<DisplaceModelInformation> { Display });,因为您在视图中指定了IEnumerable模型:@model IEnumerable<FindLocation.Models.DisplaceModelInformation>

  2. 使用foreach显示每个表格行:

    @foreach (var element in Model)
    {
     if (element.Dispaylist.Count > 0)
     {
         foreach (var Display in element.Dispaylist)
         {
             <tr>
                 <td>@Display.Name</td>
                 <td>@Display.Address</td>
                 <td>@Display.Rating</td>
             </tr>
         }
      }
    }