Я пишу представление, которое отображает список менеджеров. У менеджеров есть флажки рядом с их именем, чтобы выбрать их для удаления из списка менеджеров. У меня возникают проблемы с привязкой представления формы к моей модели представления. Вот то, что страница выглядит следующим образом:Невозможно связать модель MVC на POST
Вот ViewModel для этой страницы.
public class AddListManagersViewModel
{
public List<DeleteableManagerViewModel> CurrentManagers;
}
А вот суб-ViewModel для каждого из DeleteableManagers:
public class DeleteableManagerViewModel
{
public string ExtId { get; set; }
public string DisplayName { get; set; }
public bool ToBeDeleted { get; set; }
}
Это код для главного вида:
@model MyApp.UI.ViewModels.Admin.AddListManagersViewModel
<div class="row">
<div class="span7">
@using (Html.BeginForm("RemoveManagers","Admin"))
{
@Html.AntiForgeryToken()
<fieldset>
<legend>System Managers</legend>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Remove</th>
</tr>
</thead>
<tbody>
@Html.EditorFor(model => model.CurrentManagers)
</tbody>
</table>
</fieldset>
<div class="form-actions">
<button type="submit" class="btn btn-primary">Delete Selected</button>
</div>
}
</div>
</div>
И это EditorTemplate Я созданный для DeleteableManagerViewModel:
@model MyApp.UI.ViewModels.Admin.DeleteableManagerViewModel
<tr>
<td>@Html.DisplayFor(model => model.DisplayName)</td>
<td>
@Html.CheckBoxFor(model => model.ToBeDeleted)
@Html.HiddenFor(model => model.ExtId)
</td>
</tr>
Но когда я отправляю форму контроллеру, модель возвращается обратно! это то, что я хочу, чтобы это сделать:
[HttpPost]
public virtual RedirectToRouteResult RemoveManagers(AddListManagersViewModel model)
{
foreach (var man in model.CurrentManagers)
{
if (man.ToBeDeleted)
{
db.Delete(man.ExtId);
}
}
return RedirectToAction("AddListManagers");
}
Я попытался следующие по этому сообщению: CheckBoxList multiple selections: difficulty in model bind back, но я должен быть что-то ....
Спасибо за вашу помощь не хватает!
ли Firebug что-нибудь показать их размещения? Вы пытались добавить Glimpse (что позволит вам отслеживать процесс привязки)? –
это, кажется, отвечал правильно: __RequestVerificationToken = H7L_Uq6ie_6XAoYFhJQhQe2cuFdJzapaf8ZlgpnEVeUs3kr8kCu7wuVAjZ9ADXzsDZiKmHyqYLkdbVtG7CmSKPqE_upz1eR0Ub0aPxem94Y1 & CurrentManagers% 5B0% 5D.ToBeDeleted = верно и CurrentManagers% 5B0% 5D.ToBeDeleted = ложь и CurrentManagers% 5B0% 5D.ExtId = X00405982144 & CurrentManagers% 5B1% 5D.ToBeDeleted = ложь [надрез ...] – solidau
Хм. Единственная другая очевидная (возможная) проблема, которую я вижу, - это то, что при привязке модели, если индексирование коллекции нарушено (пропускает число), все после последнего последовательного номера игнорируется/отбрасывается. Я не вижу, чтобы у вас была эта проблема. –