2009-08-18 6 views
1

J'ai un problème avec l'insertion d'une liste de int à un objet. Le contrôleur ressemble à:Insérer la liste des int

public ActionResult Edit(int productID) 
    { 
     //ProductEditViewModel pm = new ProductEditViewModel(); 

     Product product = _pr.GetProducts().ByProductID(productID).First(); 
     product.Categories.Load(); 
     //ICollection<Category> allCategories = _cr.GetCategories().ToList(); 

     List<SelectListItem> Categories = (from category in _cr.GetCategories().ToList() 
              join pc in product.Categories 
              on category.CategoryID equals pc.CategoryID into j 
              select 
              new SelectListItem 
              { 
               Selected = j.Any(), 
               Value = category.CategoryID.ToString(), 
               Text = category.Categoryname 
              }).ToList(); 

     ViewData["allCategories"] = Categories; 

     return View("Edit", new ProductEditViewModel { Product = product }); 
    } 

    // 
    // POST: /Products/Edit/5 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Edit(Product product, int[] CategoryID) 
    { 
     try 
     { 
      // TODO: Add update logic here 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

Comment puis-je mettre à jour/insérer toute la liste des années CategoryID pour « product.Categories »?

Et dois-je avoir autre chose que "int [] CategoryID"?

Merci à l'avance /M

+0

Est-ce LINQ to SQL que vous utilisez là? Il me semble que votre question est plus liée à la technologie d'accès aux données que vous utilisez à ASP.NET MVC, alors je vous suggère de développer un peu sur ce sujet et peut-être retag votre question? –

Répondre

1

Je ne vois pas comment votre vue semble que c'est le point clé.
Votre vue devrait générer le code HTML semblable à ceci:

<input type="hidden" name="CategoryId[0]" value="123" /> 
<input type="hidden" name="CategoryId[1]" value="456" /> 
<input type="hidden" name="CategoryId[2]" value="789" /> 

Notez que l'indice ne devrait pas avoir des trous et vous aurez probablement le type d'Othe entrée au lieu de caché.

Questions connexes