加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC:使用LINQ To SQL获取表单复选框到多对数DB assoc表

发布时间:2020-12-15 22:42:41 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET MVC视图,其中包含用户定义类别的复选框. td% foreach (Category c in (ListCategory)ViewData["cats"]) { if (selCats.ContainsKey(c.ID)) { % input name="CategoryIDs" type="checkbox" value="%=c.ID %" checked="checked" /nbsp;%= c.Na
我有一个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" />&nbsp;<%= c.Name%><% } 
        else { %>
       <input name="CategoryIDs" type="checkbox" value="<%=c.ID %>" />&nbsp;<%= 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“CategoryID”的数组,每个数组表示所选类别.然后我想把它们放在一个包含两列的关联表中:PostID和CategoryID.这用于设置帖子和类别之间的多对多关联.

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

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

谢谢!

解决方法

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

dataContext.PostCategories.InsertAllOnSubmit(
categoryIDs.Select(id =>
    new PostCategory
    {
        CategoryID = id,PostID = myPostID
    })
);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读