ASP.NET MVC:使用LINQ To SQL获取表单复选框到多对数DB assoc表的最佳方法?

前端之家收集整理的这篇文章主要介绍了ASP.NET MVC:使用LINQ To SQL获取表单复选框到多对数DB assoc表的最佳方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ASP.NET MVC视图,其中包含用户定义类别的复选框. @H_301_2@<td><% foreach (Category c in (List<Category>)ViewData["cats"]) { if (selCats.ContainsKey(c.ID)) { %> <input name="CategoryIDs" type="checkBox" value="<%=c.ID %>" checked="checked" />&nbsp;<%= c.Name%><% } else { %> <input name="CategoryIDs" type="checkBox" value="<%=c.ID %>" />&nbsp;<%= c.Name%> <% } %> <% } %> </td>

表单发布到以下控制器操作:

@H_301_2@[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“CategoryID”的数组,每个数组表示所选类别.然后我想把它们放在一个包含两列的关联表中:PostID和CategoryID.这用于设置帖子和类别之间的多对多关联.

目前,我强烈推荐:循环遍历类别,并为每个类别添加一行到包含类别ID的关联表以及它所属的帖子的ID.

但是我想知道在ASP.NET MVC和LINQ to sql的上下文中是否有更清洁的方法自动执行此操作?

谢谢!

解决方法

我想你正在做的很好,我唯一要说的是,如果你不想循环ID,你可以在“InsertAllOnSubmit”的同时添加它们(即使这是真的只是循环): @H_301_2@int[] categoryIDs = new int[] { 0,1,2 }; dataContext.PostCategories.InsertAllOnSubmit( categoryIDs.Select(id => new PostCategory { CategoryID = id,PostID = myPostID }) );

但是无论如何,这仍然只是做了你所拥有的一样.

猜你在找的asp.Net相关文章