Итак, у меня есть модель представления вызова ProductViewModel, в которой есть список сайтов, на которых можно производить продукт.Я пытаюсь выяснить, как показать это в форме, используя флажок для пользователя, чтобы выбрать сайты, где продукт может быть произведен.Кажется, прямо вперед, верно?Ну, это не работает, как я хочу / нуждаюсь.Надеясь, что кто-то может помочь мне найти правильный способ сделать это.
Мои занятия:
public class ProductViewModel
{
public List<Sites> SiteList {get; set;}
public string ProductName {get; set;}
public int ProductId {get; set;}
public User ProductOwner{get; set;}
}
public class Sites
{
public int SiteId {get; set;}
public string SiteName {get; set;}
public bool IsSelected {get; set;}
}
Часть моего взгляда:
@Html.LabelFor(m=>m.Sites):
@foreach (var site in Model.Sites)
{
@Html.CheckBox("Sites", site.IsSelected, new { value = site.SiteName })
@Html.Label(site.SiteName)
}
При использовании @Html.Checkbox () Я вижу следующий вывод в html из браузера:
<input checked="checked" id="Sites" name="Sites" type="checkbox" value="Miami" />
<input name="Sites" type="hidden" value="false" />
Я понимаю скрытое поле, но мне действительно нужно получить значение для выбранного элемента.Так что мне нужно вернуть список с Майами.Мне не нужна ложная / истинная вещь, которую, похоже, хочет послать html-помощник (т.е. Miami = true)
Так что вместо этого я попробовал это.
@for(int id=0; id < Model.Sites.Count(); id++)
{
<input type="checkbox" id="@Model.Sites[id].SiteName" name="Sites[@id]" value="@Model.BoxingSites[id].SiteName" @(Model.Sites[id].IsSelected ? @"checked=""checked""": "") />
@Html.Label(Model.Sites[id].SiteName)
}
И вывод:
<input type="checkbox" id="Miami" name="Sites[0]" value="Miami" checked="checked" />
<label for="Miami">Miami</label>
В обоих этих случаях я не могу получить подшивку для сопоставления значений формы со списком Product.Sites при публикации в действии.
Действие похоже наэто:
[HttpPost]
public ActionResult Edit(ProductViewModel Product)
{
//Does something with the form data.
}
Другие значения (ProductName и т. д.) отлично отображаются.
Что я делаю не так?Я чувствую, что чего-то не хватает, так как это должно быть проще из-за того, как MVC упрощает множество других ситуаций с обработкой форм.
Заранее спасибо ...