2013-02-18 64 views
0

我有两个表DealDealDetail。我创建了两个控制器方法。主/细节编辑 - 将值传递给详细模型属性

// 
    // GET: /DealDetail/Create/5 

    public ActionResult Create(int id) 
    { 
     var deal = _db.Deals.Find(id); 
     ViewBag.Deal = deal; 
     return View(); 
    } 

    // 
    // POST: /DealDetail/Create/5 

    [HttpPost] 
    public ActionResult Create(int id, DealDetail dealdetail) 
    { 
     dealdetail.DealId = id; 
     if (ModelState.IsValid) 
     { 
      _db.DealDetails.Add(dealdetail); 
      _db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(dealdetail); 
    } 

然而,如何确保下面的HTML代码使用的/DealDetail/Create/5代替/DealDetail/Create要发布的网址?

@Html.Partial("_Deal", (Models.Deal)ViewBag.Deal) 
@using (Html.BeginForm()) { 
     ...... 
     <input type="submit" value="Create" /> 
    </fieldset> 
} 

还是有办法设置DealDetail.DealIDViewBag.Deal.DealId(ID)在CSHTML文件中的值?

回答

2

我想这应该做你在找什么:

Html.BeginForm("Create","DealDetail", new { id = Model.DealID }, FormMethod.Post); 

无论你从你的模型或ViewBag分配ID,重要的一点是分配的ID,路由引擎和您现有的控制器逻辑应该休息一下。