我使用模型優先方法創建了帶有實體框架的數據庫。除其他外,我有一個ContentEntry
類型和Tag
類型。每個ContentEntry
可以有多個Tag
s,並且每個Tag
可以被多個ContentEntry
使用。應該是這樣的,沒有標籤在數據庫中存在的兩倍,因爲這是在N:M關係: MVC - 將所有ListBox項目傳遞迴控制器
現在,我嘗試創建一個控制器/視圖中創建一個新的ContentEntry
與Tag
秒。我不知道如何創建一個列表框,它將全部他的物品返回給控制器。 JavaScript的(使用jQuery)是沒有問題對我來說:
<span class="label">Tags</span>
@Html.ListBoxFor(model => model.Tags,
new MultiSelectList(Model.Tags),
new { id = "lbTags" })
<input type="text" id="tbTag" />
<input type="button" value="add" onclick="addTag();" />
<input type="button" value="delete" onclick="delTags();" />
<script>
function addTag() {
$('#lbTags').append($('<option>',
{ value: $("#tbTag").val(), text: $("#tbTag").val() }));
}
function delTags() {
$("#lbTags option:selected").remove();
}
</script>
@Html.ValidationMessageFor(model => model.Tags, "", new { @class = "input-error" })
但我Tags
集合保持始終爲空:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateBlogEntry
([Bind(Include = "Id,Published,Title,AccountId,HtmlContent,Tags")]BlogEntry blogEntry)
{
//blogEntry.Tags is always empty
if (ModelState.IsValid
{
db.ContentEntrySet.Add(blogEntry);
db.SaveChanges();
return RedirectToAction("Index");
}
BlogEntry
是ContentEntry
一個衍生物,並ContentEntry.Tags
是ICollection<Tag>
。
有沒有人有一個想法如何解決這個任務?
編輯: 這裏是我的GET-方法CreateBlogEntry:
public ActionResult CreateBlogEntry()
{
//ViewBag.Tags = db.TagSet;
return View(new BlogEntry()
{
Published = DateTime.Now,
});
}
你能爲'CreateBlogEntry'發佈'GET'方法嗎? – 2015-04-05 23:45:46
@Alundrathedreamwalker我添加了GET方法,我的問題 – Koopakiller 2015-04-06 00:05:56
一種方法來解決這個問題是創建一個視圖模型,將有所有你從 – 2015-04-06 00:29:52