У меня есть модель для бизнеса. Эта модель использует модель представления для адреса, контактной информации, а также IEnumerable.Почему мои флажки не привязаны к моей модели просмотра?
Я использую шаблоны редакторов для отображения флажков. Проблема в том, что когда я нахожусь в действии редактирования и публикую форму, возвращаемую категориями как null. Я прочитал несколько подобных вопросов, но havent нашел решение, которое, похоже, работает.
Я не нашел удачи, и в настоящее время я не вижу правильной информации в шаблоне редактора. Я знаю, что флажкам нужен скрытый ввод, чтобы идти с ними, и, может быть, моя проблема там лежит?
BusinessViewModel
public class BusinessViewModel
{
public int? Id { get; set; }
[UIHint("ContactDetailsEditorTemplate")]
public ContactDetailsViewModel ContactDetailsViewModel { get; set; }
[UIHint("CheckboxEditorTemplate")]
public IEnumerable<CheckboxViewModel> Categories { get; set; }
}
CheckboxViewModel
public class CheckboxViewModel
{
public int CategoryId { get; set;}
public string Description { get; set;}
public bool Checked { get; set; }
}
CheckboxEditorTemplate
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<ViewModels.BuyWithConfidence.CheckboxViewModel>>" %>
<table class="aligncenter">
<tr class="tRow left"><%
var intBreakLine = 0;
if (Model != null)
{
foreach (var category in Model)
{
if (intBreakLine >= 2)
{
intBreakLine = 0;%>
</tr>
<tr class="tRow left"><%
}%>
<td>
<%= Html.Hidden(string.Format("Categories[{0}].CategoryID", i), category.CategoryId) %>
<%= Html.CheckBox(string.Format("Categories[{0}].Checked", i), category.Checked) %>
</td>
<td><%=category.Description%></td><%
intBreakLine = intBreakLine + 1;
i = i + 1;
}
}%>
</tr>
</table>
Это фрагмент того, что производит шаблон:
<input id="Categories_Categories_0__CategoryID" name="Categories.Categories[0].CategoryID" type="hidden" value="1" />
<input id="Categories_Categories_0__Checked" name="Categories.Categories[0].Checked" type="checkbox" value="true" /><input name="Categories.Categories[0].Checked" type="hidden" value="false" />
я все еще получаю нуль для trader.categories, когда после действия удара. Я попробовал оба выше и начал i по 0 – Andrew
Я обновил вопрос с html, который он создает, может быть, вы можете что-то заметить? – Andrew
Полученный html должен быть назван 'Категории [69]. *'. Почему это 'Categories.Categories [69]. *'? Это скажет связующему, что он ищет свойство с именем «Категории», в котором есть коллекция «Категории». – dotjoe