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);
    }

但是,如何确保使用 url/DealDetail/Create/5而不是发布以下 html 代码/DealDetail/Create

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

或者有没有办法在cshtml文件中设置(id)DealDetail.DealID的值?ViewBag.Deal.DealId

4

1 回答 1

2

我认为这应该可以满足您的需求:

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

无论您是从 Model 还是 ViewBag 分配 id,重要的一点是分配 id,其余的应该由路由引擎和现有的 Controller 逻辑来完成。

于 2013-02-18T06:54:09.807 回答