Я создаю MediaLibrary в MVC.У меня есть модель MediaType и модель поддержки.Каждый MediaType (фильм, игра, музыка) может иметь поддержку (CD, DVD, BluRay, ...).
Я создал модели и добавил отношения (hasmany, withmany, ...),контроллер и представления для поддержки (здесь нет проблем), но я не знаю, как управлять контроллером и просматривать MediaType, чтобы иметь возможность добавлять несколько Поддержек и проверять их с помощью модели.
Модель MediaType:
[Bind(Exclude = "MediaTypeId")]
public class MediaType
{
[ScaffoldColumn(false)]
public int MediaTypeId { get; set; }
[DisplayName("Media type")]
public string name { get; set; }
// Disponible supports
public virtual ICollection<Support> Supports { get; set; }
}
Модель поддержки
[Bind(Exclude = "SupportId")]
public class Support
{
[ScaffoldColumn(false)]
public int SupportId { get; set; }
[DisplayName("Support name")]
public string name { get; set; }
// MediaTypes using this support (not used in the view now)
public virtual ICollection<MediaType> MediaTypes { get; set; }
}
Действие Create из контроллера MediaType
public ActionResult Create()
{
ViewData["SupportsList"] = new SelectList(db.Supports.ToList(), "SupportId", "name");
return View();
}
[HttpPost]
public ActionResult Create(MediaType mediatype)
{
if (ModelState.IsValid)
{
db.MediaTypes.Add(mediatype);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewData["SupportsList"] = new SelectList(db.Supports.ToList(), "SupportId", "name");
return View(mediatype);
Представление Create для действия Create MediaType Createконтроллер (часть для Supports)
<div class="editor-field" id="supportList">
@Html.DropDownList("Supports", (SelectList)ViewData["SupportsList"])
<a href="#" id="addSupport">Ajouter</a> <span id="addSupportError" class="error"></span>
<script type="text/javascript">
$('#addSupport').click(function () {
if ($('input[name="SupportsIds[]"][value="' + $('#Supports').val() + '"]').length < 1) {
$('#supportList').append('<div>' + $('#Supports option:selected').text() + '<input type="hidden" name="SupportsIds[]" value="' + $('#Supports').val() + '" /></div>');
$('span#addSupportError').text('');
} else {
$('span#addSupportError').text('The support has already been added');
}
});
</script>
</div>
Я действительно сделал странный скрипт в jQuery для добавления Supports в MediaType, в db есть выпадающий список со всеми поддержками, когда вы нажимаете add, он добавляетметка с именем и скрытым полем с идентификатором поддержки (имена скрытых полей - "SupportIds []", поэтому он должен возвращать список идентификаторов поддержки, нет?)
Кто-то уже что-то кодировалкак тесть (много ко многим, ...)?