好的。我不知道如何正確解釋這個問題,這個問題的標題可能是錯誤的。我有一個多對多的關係Reference
和Category
之間:需要MVC4多對多動態模型綁定
public class Reference
{
public int Id { get; set; }
public string Headline { get; set; }
public virtual ICollection<Category> Categories { get; set; }
}
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public virtual ICollection<Reference> References { get; set; }
}
在創建Reference
入門用戶應該能夠添加儘可能多的類別(在下拉與所有可用的類別列表的形式) 。下面是我想出迄今的視圖模型綁定推測這一切沒有任何邏輯控制器創建相關數據:
<div class='meta-container meta-cat'>
<div class="meta-sub">
<div class="editor-label">Name</div>
<select name="Categories[0].Name" value="">
@{
var db = new DbContext();
var categories = db.Categories.ToList();
foreach (var c in categories)
{
<option value="@c.CategoryId">@c.Name</option>
}
}
</select>
</div>
</div>
<div class="additonalContainersCats"></div>
<input type="submit" value="Add another category" id="AddCat" />
<script>
$('#AddCat').click(function() {
var propNumber = 0;
var dropdown = $(this).parent().find('select').first();
var options = "";
$(dropdown, "option").each(function() {
options += $(this).html();
});
$('.meta-cat').each(function() {
propNumber++;
});
var html = "<div class='meta-container meta-cat'>" +
"<div class='meta-sub'>" +
"<div class='editor-label'>Name</div>" +
"<select name='Categories[" + propNumber + "].Name' value=''>" +
options +
"</select>" +
"</div>" +
"</div>" +
"</div>";
$('.additonalContainersCats').append(html);
return false;
});
</script>
所以每次用戶點擊添加新類別按鈕用name="Category[int].Name"
創建新的下拉列表。 這將適用於一對多(一個參考類別)關係和文本框,而不是下拉列表。 這看起來不是很漂亮MVC(它非常webform'ish):)
你會如何做到這一點?
更新 - 提交數據時忘記提及結果。 創建新類別。如果我選擇2個類別作爲參考,則使用原始類別的CategoryId
中的Name
屬性創建兩個新類別。在參考文獻和新類別之間建立關係。時髦呵呵:)
爲什麼不能爲許多人工作? (也許我在這裏沒有東西) – torm
@torm - 更新了問題 –
我試圖做一些修改,看看:http://jsbin.com/awanur/1/edit –