поэтому у меня есть следующий код:Пользовательское имя файла для @ Html.EditorForModel()?
@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> Save</button>
<a href="@Url.Action("Index", "Assignment")" class="btn btn-primary"><i class="icon-back"></i> Cancel</a>
</div>
}
</div>
Как вы можете видеть, что моя модель передается в поле зрения является IEnumerable Типового Марка.
Теперь у меня есть EditorTemplate под Views/общей папке под названием 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 от Марка к AssignmentMarks? Я бы хотел, чтобы это было более конкретным, а не общим именем Marks.
Edit:
Внутри моего 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. cshtm л
@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
Да, вы можете посмотреть мой ответ здесь: http://stackoverflow.com/questions/12050109/mvc3-editor-template-css-clas-maxlength-and-size/12052784#12052784. Вы просто называете это явно, как @EditorFor (m => m.Mark, «AssignmentMarks») – MiBu
Ну, вы видите, с вызовом @ Html.EditorFor (Model, «AssignmentMarks»). Я получаю несоответствие модели (ожидается, что единая сущность от Mark, вместо этого я передаю IEnumerable. И, чтобы все это произошло, если я продолжу и измените свой файл EditorTemplate, чтобы принять IEnumerable , когда я передаю свой viewModel контроллеру в POST, я получаю возвращаемый тип NULL –
Вы можете упасть в foreach, а затем в каждый редактор вызовов элементов для. Для публикации каждого из элементов в списке должен быть другой идентификатор для свойств (например, Mark.Student.FullName [index] ...), вы можете увидеть http://stackoverflow.com/questions/11267354/how-to-produce-non-sequential-prefix-collection-indices-with-mvc-html-editor-tem/11267659#11267659 для этого сценария. – MiBu