MVC3为相关对象填充“创建”视图

时间:2011-02-04 19:25:37

标签: linq-to-entities asp.net-mvc-3 ado.net-entity-data-model

相关文章:Populating a select box in a form using related ID in MVC3

我有一个使用MVC3和ADO.NET Linq-to-Entities生成的Listview。

我已经能够创建一个简单的列表视图,其中包含“创建”和“创建”。 “编辑”动作链接命令用于创建“相关对象”。

 @Html.ActionLink("Create Shipping Profile", "../PrintProfile/Create", new { id = item.ProductId }) |
 @Html.ActionLink("Edit Shipping Profile", "../PrintProfile/Edit", new { id = item.ProductId })

当我创建'PrintProfile'时,我希望“创建”视图与“ProductId”(这是数据库表关系)'预先填充',以便我可以创建配置文件,并编辑列表中每个项目的关联配置文件。

以下是PrintProfile的创建控制器

    public ActionResult Create(int ProductId)
    {
        var entities = new CS_ShippingProfiles();
        entities.ProductId = ProductId; // Assign the ProductId I want to 'create'
        return View(entities);
    }

    [HttpPost]
    public ActionResult Create(CS_ShippingProfiles Profile)
    {
        if (ModelState.IsValid)
        {
            var entities = new LabelServiceEntities();
            entities.AddToCS_ShippingProfiles(Profile);
            entities.SaveChanges();

            return Redirect("/Products");
        }
        return View(Profile);
    }

但是当我按照链接时,我得到一个'Null'参数异常!我做错了什么?!

1 个答案:

答案 0 :(得分:1)

Create操作上的操作参数名为ProductId,因此请确保生成正确的链接:

@Html.ActionLink(
    "Create Shipping Profile", 
    "Create", 
    "PrintProfile", 
    new { ProductId = item.ProductId }, 
    null
) 
|
@Html.ActionLink(
    "Edit Shipping Profile", 
    "Edit", 
    "PrintProfile", 
    new { ProductId = item.ProductId }, 
    null
)

还要注意如何指定控制器和操作,而不是像你那样使用某些相对URL(../PrintProfile/Create)。