gpt4 book ai didi

.net - ASP.NET MVC : Best way to get form checkboxes into many-to-many DB assoc table with LINQ To SQL?

转载 作者:行者123 更新时间:2023-12-04 01:08:50 28 4
gpt4 key购买 nike

我有一个 ASP.NET MVC View ,其中包含用户定义类别的复选框。

<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>

表单发布到以下 Controller 操作:
[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”数组,每个 ID 代表一个选定的类别。然后我想将它们放入包含两列的关联表中: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
})
);

但无论哪种方式,这仍然只是和你所拥有的一样。

关于.net - ASP.NET MVC : Best way to get form checkboxes into many-to-many DB assoc table with LINQ To SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223363/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com