1

我是 MVC 和学习 MVC 的新手。现在我不想使用任何网格扩展,而是只想通过 HTML 表格生成表格 UI。所以我一直在寻找代码并找到了提示。

此代码不是完整代码。这是我得到的。

<% if (Model.Count() > 0)
{ %>
    <table width="35%">
 <thead><tr><th>Species</th><th>Length</th></tr></thead>
  <%  foreach (var item in Model)
    { %>
     <tr>
         <td><%= item.FishSpecies%></td>
         <td align="center"><%=item.Length%></td>
     </tr>

 <% } %>
    </table>
<% }
else
{ %>
No fish collected.
<%} %>

问题是我无法想象模型类的外观以及它是如何从控制器中填充的。代码中不使用 Viewbag,而是直接从模型类生成表。

那么任何人都可以为我编写一个小的完整代码来创建一个 HTML 表格并直接填充模型而不使用 viewbag 吗?

也需要模型、控制器和视图的代码。

4

2 回答 2

1

您的模型实际上需要是IEnumerable<Model>. 所以你可能有一个模型:

public class Model
{
    public string FishSpecies { get; set; }
    public int Length { get; set; }

    public static IEnumerable<Model> Load() { ... }
}

然后在您的控制器的操作中:

var list = Model.Load();
return View(list);

然后在视图中,您需要在最顶部定义模型:

@model System.Collections.IEnumerable<My.Namespace.Model>

现在,这两行不起作用:

<td><%= item.FishSpecies%></td>
<td align="center"><%=item.Length%></td>

他们需要更像这样:

<td>@Html.DisplayFor(m => item.FishSpecies)</td>
<td>@Html.DisplayFor(m => item.Length)</td>
于 2013-07-25T11:55:32.283 回答
0

如果你想遍历你的模型并创建你的表,首先@model像这样改变你的视图:

@model IEnumerable<myPrj.Models.EntityName>

然后,您应该更改您的操作方法以将模型项提供给您的视图:

public ActionResult Index()
{            
    return View(db.EntityNames.ToList());
}

最后,迭代你的模型并创建你的表:

<table id="tblNews">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Property1)
    </th>

    // ...

    <th>
        @Html.DisplayNameFor(model => model.Propertyn)
    </th>        
</tr>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Property1)
    </td>

    // ... 

    <td>
        @Html.DisplayFor(modelItem => item.Propertyn)
    </td>        
</tr>
}
</table>

关于模型?模型只不过是一个具有一些属性的类:

public class MyModel
{
    [Display(Name = "Property 1")]
    [Required(ErrorMessage = "Property cannot be empty")]
    public int Property1 { get; set; }

    // ...

    [Display(Name = "Property n")]
    [Required(ErrorMessage = "Property cannot be empty")]
    public string Propertyn { get; set; }        
}
于 2013-07-25T11:52:40.867 回答