ASP.NET MVC: أفضل طريقة للحصول على مربعات النموذج إلى كثير لكثير الجدول ASSOC DB مع LINQ إلى SQL؟

StackOverflow https://stackoverflow.com/questions/223363

سؤال

ولدي وجهة نظر 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);
}

وسيتم تحويل خانات النموذج لمجموعة من معرفات صحيحة "CategoryIDs"، يمثل كل فئة مختارة. وبعد ذلك نريد ان نضع هذه في جدول رابطة يحتوي على عمودين: معرف المشاركة ومعرف_الفئة. هذا وتستخدم لانشاء جمعية كثير لكثير بين المشاركات والفئات.

وحاليا أنا الغاشمة، مما اضطرها: حلقات من خلال فئات، ولكل واحد، إضافة صف إلى الجدول الذي يحتوي على جمعية ID الفئة، وID من المنصب الذي كان ينتمي

ولكن أنا أتساءل عما اذا كان هناك طريقة أكثر نظافة للقيام بذلك التلقائى في سياق ASP.NET MVC وLINQ إلى SQL؟

وشكرا!

هل كانت مفيدة؟

المحلول

وأعتقد أن ما تفعلونه على ما يرام ... الشيء الوحيد الذي أود أن أقوله هو أنه إذا كنت لا تريد أن يتكرر خلال ال ID، يمكنك إضافتها في نفس الوقت مع "InsertAllOnSubmit" (على الرغم من هذا هو في الحقيقة مجرد حلقات أيضا):

int[] categoryIDs = new int[] { 0, 1, 2 };

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

ولكن في كلتا الحالتين، وهذا لا يزال مجرد القيام نفس ما لديك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top