我有一个 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);
}
表单复选框将被转换为一个整数 ID 数组“CategoryIDs”,每个代表一个选定的类别。然后,我想将它们放入包含两列的关联表中:PostID 和 CategoryID。这用于在帖子和类别之间建立多对多关联。
目前我正在强制它:遍历类别,并为每个类别添加一行到包含类别 ID 的关联表,以及它所属的帖子的 ID。
但是我想知道在 ASP.NET MVC 和 LINQ to SQL 的上下文中是否有一种更简洁的方法可以自动执行此操作?
谢谢!