데이터베이스에서 검색 한 항목 목록에서 선택하는 방법을 찾고 있습니다. 이러한 항목을 뷰에 보내고 목록에서 선택하고이를 컨트롤러로 반환하여 데이터베이스 내에 보조 테이블을 채우고 싶습니다. 보기에 항목을 전달하고 표시하도록 할 수 있지만 이러한 항목을 다시 컨트롤러로 전달할 수는 없습니다.MVC4보기의 항목 목록에서 선택
컨트롤러 (업데이트 다시) 호출 :
public ActionResult Create()
{
var myMeal = new CreateMeal();
List<ProductsToInclude> pti = new List<ProductsToInclude>();
myMeal.ProductsToInclude = pti;
IList<Product> prods = db.Products.ToList();
foreach(var prod in prods)
{
pti.Add(new ProductsToInclude { Product = prod });
}
return View(myMeal);
}
//
// POST: /Meal/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(CreateMeal myMeal)
{
if (ModelState.IsValid)
{
/* Add code to handle my meal and create a meal for data base*/
db.Meals.Add(meal);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(pti);
}
ProductsToInclude 뷰 모델을
public class ProductsToInclude
{
public Product Product { get; set; }
public Boolean Include { get; set; }
}
새로운 CreateMeal 뷰 모델 :
public class CreateMeal
{
public String Name { get; set; }
public IList<ProductsToInclude> ProductsToInclude { get; set; }
}
만들기를보기 :
(210)그리고 (업데이트) 편집기 templete입니다 :
@model MealPlanner.ViewModels.ProductsToInclude
<tr>
<td>
@Html.CheckBoxFor(m => m.Include)
</td>
<td>
@Model.Product.Name
@Model.Product.Quantity
@Model.Product.unit.UnitName
@Html.HiddenFor(m => m.Product.Name)
@Html.HiddenFor(m => m.Product.Quantity)
@Html.HiddenFor(m => m.Product.unit.UnitName)
</td>
</tr>
식사 모델 :
public class Meal
{
public int MealId { get; set; }
public String Name { get; set; }
//public virtual IList<Product> Products { get; set; }
public int UserId { get; set; }
}
UPDATE :
내가이 표시 얻을 수 EditorTemplete까지 전환. 이제 myMeal.ProductsToInclude.Add (new ProductsToInclude {Product = prod, Include = false}) 오류가 발생합니다. Create 메서드에서. 찌르다는 인구가 8 제품에있다.
가장 큰 문제 일 가능성이있는 오류가 있지만 전체 답변을 제공하려면 식사 클래스 코드로 질문을 업데이트 할 수 있습니까? – macsux
게시물의 요청 양식 데이터를 확인 했습니까?네가 필요로하는 것을 네가 기대하는 것과 다르게 명명 했어? – PeteGO
@PeteGO 반환 양식 데이터가 null입니다. – jbolt