将控制器中的整数传递给视图mvc

时间:2012-11-20 01:32:23

标签: asp.net-mvc

我正在努力完成我认为简单的事情。我无法绕过它。

我有一个组织列表,它只是组织ID和名称。我想要做的是在每个组织旁边都有一个“添加”链接,就像编辑一样(就像删除和编辑按钮一样)。

它将获取OrganizationID并将其传递给其他控制器中的一个Create Views,并自动填写OrganizationID的字段。

添加链接只会指向具有DropDownList的视图。然后,用户将选择其中一个选项,例如“地址”,以便向从“组织”列表中选择的组织添加地址。用户选择地址后,他们点击提交按钮。然后它进入OrganizationAddress创建视图并自动填写OrganizationID字段。

我真的希望我解释得很好。

这是我的OrganizationController中的Add ActionResult

public ActionResult Add(int id)
{
    using (var db = new VAGTCEntities())
    {
        ViewBag.OrgPages = ddp.PageList();
        return View(db.Organizations.Find(id));
    }
}

抓住组织。

以下是我的添加视图中的表单:

    <fieldset>
        <legend>Organization</legend>

        @Html.HiddenFor(model => model.OrganizationID)

        <div class="editor-label">
            @Html.Label("Add:")
        </div>
        <div>
            @Html.DropDownList("OrgPages")
        </div>
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>
}

这是我的OrganizationController中的添加POST ActionResult

[HttpPost]
public ActionResult Add(int id, Organization organization, int OrgPages)
{

    try{
        ViewBag.OrgID = id;
        if (OrgPages == 2)
            return RedirectToAction("Create", "OrgAddress");
        else if (OrgPages == 3)
            return RedirectToAction("Create", "OrgIE");
        else if (OrgPages == 4)
            return RedirectToAction("Create", "OrgMembership");
        else if (OrgPages == 5)
            return RedirectToAction("Create", "OrgBusinessType");
        else if (OrgPages == 6)
            return RedirectToAction("Create", "OrgIndustryType");
        else if (OrgPages == 7)
            return RedirectToAction("Create", "OrgPhone");
        else if (OrgPages == 8)
            return RedirectToAction("Create", "OrgEmail");
        else if (OrgPages == 9)
            return RedirectToAction("Create", "OrgWebsite");
        else if (OrgPages == 9)
            return RedirectToAction("Create", "OrgNote");
        else                   
            return RedirectToAction("Index");
    }
    catch (Exception)
    {
        ModelState.AddModelError("Error", "This item exists in the database already.");
        ViewBag.OrgPages = ddp.PageList();
    }
    return View(organization);
}

从这里我无法弄明白。我试图传递的任何东西都是空的。 我还是MVC的新手 - 慢慢地,慢慢地学习我的方式!

非常感谢!

1 个答案:

答案 0 :(得分:1)

您是否有自定义路线来考虑您传递的以下参数?

public ActionResult Add(int id, Organization organization, int OrgPages)

在您的视图中,您可以指定表单将发布到哪个操作并包含参数,或者只是将这些属性(即Organization,OrgPages)添加到视图模型中,然后让MVC为您执行所有绑定。 / p>

Read this for details