0

所以我有以下代码:

@model IEnumerable<My_School_Book.Models.Mark>
@{
    ViewBag.Title = "Marks";
}

<div class="row-fluid">
    <h1>Assignment Marks:</h1>
    @using (Html.BeginForm("Marks", "Assignment", FormMethod.Post, new { @class = "form-horizontal" }))
    {
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>Student</th>
                    <th style="width: 50px;">Mark
                    </th>
                    <th style="width: 50px;">Total
                    </th>
                    <th style="width: 50px;">Weight</th>
                </tr>
            </thead>
            <tbody>
                @Html.EditorForModel()
            </tbody>
        </table>
        <div class="form-actions">
            <button type="submit" class="btn btn-primary"><i class="icon-checkmark"></i>&nbsp;Save</button>
            <a href="@Url.Action("Index", "Assignment")" class="btn btn-primary"><i class="icon-back"></i>&nbsp;Cancel</a>
        </div>
    }
</div>

如您所见,传递给视图的模型是模型标记的 IEnumerable。

现在我在 Views/Shared 文件夹下有一个 EditorTemplate,名为 Mark:

@model My_School_Book.Models.Mark
<tr>
    <td>@Model.Student.FullName</td>
    <td>
        @Html.TextBoxFor(model => Model.Grade, new { @class = "span12", @style = "min-height: 20px;", @maxlength = "5" })
    </td>
    <td>
        @Model.Assignment.Total
    </td>
    <td>@Model.Assignment.Weight</td>
</tr>

我的问题是,我可以将我的 EditorTemplate 文件从 Mark 重命名为 AssignmentMarks 吗?我希望它更具体,而不是一个名为 Marks 的通用名称。

编辑:

在我的 MarkRepository.cs 里面

    public IEnumerable<Mark> GetAllByAssignmentID(Guid id)
    {
        return context.Marks.Where(m => m.AssignmentID == id);
    }

在我的 AssignmentController.cs 中

    public ActionResult Marks(Guid id)
    {
        IEnumerable<Mark> Marks = markRepository.GetAllByAssignmentID(id).ToList();
        return View(Marks);
    }

    [HttpPost]
    public ActionResult Marks(IEnumerable<Mark> viewModel)
    {
        if (ModelState.IsValid)
        {

        }
        return View(viewModel);
    }

在我的 Marks.cshtml 里面

   @Html.EditorForModel("Mark", "AssignmentMark")

在我的 AssignmentMark.cshtml 中

@model My_School_Book.Models.Mark
<tr>
    <td>@Html.DisplayTextFor(model => model.Student.FullName)</td>
    <td>@Html.TextBoxFor(model => model.Grade, new { @class = "span12" })</td>
    <td>@Html.DisplayTextFor(model => model.Assignment.Total)</td>
    <td>@Html.DisplayTextFor(model => model.Assignment.Weight)</td>
</tr>

我在视图上收到的错误现在是:

System.Data.Entity.DynamicProxies.Assignment_7EDE7AD8477AB363802A036747CD8A8B259C6CD72DCEF587A2B0FBEDC7B2DCE1System.Data.Entity.DynamicProxies.Assignment_7EDE7AD8477AB363802A036747CD8A8B259C6CD72DCEF587A2B0FBEDC7B2DCE1System.Data.Entity.DynamicProxies.Assignment_7EDE7AD8477AB363802A036747CD8A8B259C6CD72DCEF587A2B0FBEDC7B2DCE1System.Data.Entity.DynamicProxies.Assignment_7EDE7AD8477AB363802A036747CD8A8B259C6CD72DCEF587A2B0FBEDC7B2DCE1
4

1 回答 1

0
  1. 将您的模型类重命名为AssignmentMarks
  2. 代替@EditorForModel(),运行以下命令:

    @foreach(var mark in Model)
    {
      @EditorFor(m => m.Mark, "AssignmentMark")
    }
    

希望这会帮助你。

于 2012-08-24T02:37:42.390 回答