У меня есть представление ASP.NET MVC, которое содержит флажки для пользовательских категорий.
<td><% foreach (Category c in (List<Category>)ViewData["cats"]) {
if (selCats.ContainsKey(c.ID)) { %>
<input name="CategoryIDs" type="checkbox" value="<%=c.ID %>" checked="checked" /> <%= c.Name%><% }
else { %>
<input name="CategoryIDs" type="checkbox" value="<%=c.ID %>" /> <%= c.Name%> <% } %>
<% } %>
</td>
Форма отправляется на следующее действие контроллера:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, int [] CategoryIDs)
{
PostsDataContext db = new PostsDataContext();
var post = db.Posts.Single(p => p.ID == id);
UpdateModel(post, new[] { "Title", "Subtitle", "RawContent", "PublishDate", "Slug" });
db.SubmitChanges();
return Redirect("/archives/" + post.Slug);
}
Флажки формы будут преобразованы в массив целых идентификаторов "CategoryID", каждый из которых представляет выбранную категорию. Затем я хочу поместить их в таблицу ассоциаций, содержащую два столбца: PostID и CategoryID. Это используется для настройки связи "многие-ко-многим" между сообщениями и категориями.
В настоящее время я грубо заставляю это: перебирать категории и для каждого, добавляя строку в таблицу ассоциаций, содержащую идентификатор категории, и идентификатор сообщения, к которому он принадлежит.
Но мне интересно, есть ли более чистый способ сделать это автоматически в контексте ASP.NET MVC и LINQ to SQL?
Спасибо!