2

我有一个带有 EF 的 ASP.NET MVC 4 项目我有一个带有Parteners的表。该表有 2 种类型的合作伙伴:代理(part_type=1)和客户(part_type=2)。在 Create 视图中,我有第一个 DropDownList 显示我的所有代理、一个按钮和第二个 DDL 显示与所选代理对应的所有客户端。Q1:我应该使用什么按钮?, , @Html.ActionLink() ?创建.cshtml

    <div class="editor-field">
        @Html.DropDownList("idagenti", ViewData["idagenti"] as List<SelectListItem>, String.Empty)
    </div>
    @*a button*@
    <div class="editor-label">
        @Html.LabelFor(model => model.id_parten, "Client")
    </div>
    <div class="editor-field">
        @Html.DropDownList("id_parten", String.Empty)
        @Html.ValidationMessageFor(model => model.id_parten)
    </div>

OrdersController.cs

 public ActionResult Create(int? id) // id is the selected agent
 {
    var agqry = db.partener.Where(p => p.part_type == 1).Where(p => p.activ == true);
    var cltqry = db.partener.Where(p => p.part_type == 2).Where(p => p.activ == true);
    List<SelectListItem> idagenti = new List<SelectListItem>();
    foreach (partener ag in agqry)
    {
       idagenti.Add(new SelectListItem { Text = ag.den_parten, Value = ag.id_parten.ToString() });
    }
    if (id != null)
    {
        cltqry = cltqry.Where(p => p.par_parten == id);
    }
    ViewData["idagenti"] = idagenti;
    ViewBag.id_parten = new SelectList(cltqry, "id_parten", "den_parten");//
 }

问:如何将选定的代理 ID 从第一个 DDL 传递到我的控制器?

4

1 回答 1

6

下面的表格是根据选择的性别(男性或女性)显示性别的标题(Mr.代表男性,Mrs.代表女性)的情况。

使用Ajax.Begin()帮助程序,您可以回发到控制器并将值返回到视图。

所有数据都是硬编码的,因此请原谅手动添加信息。

查看 - Form.cshtml

<fieldset>
    <legend>Form</legend>
    @* This will post to the BindTitles method in the Form Controller *@
    @using (Ajax.BeginForm("BindTitles", "Form", new AjaxOptions
    {
        HttpMethod = "POST"
    }))
    {  
        <p>
            @Html.DropDownList("Genders")
        </p>        
        <p>
            <input type="submit" value="Submit" />
        </p>
    }
    <p>
        @Html.DropDownList("Titles")
    </p>
</fieldset>

控制器 - 表单控制器

    public ActionResult Form()
    {
        List<string> genderList = new List<string>();
        genderList.Add("Male");
        genderList.Add("Female");
        ViewBag.Genders = new SelectList(genderList);
        ViewBag.Titles = new SelectList(new List<string>());
        return View();
    }

    [HttpPost]
    public ActionResult BindTitles(string genders)
    {
        List<string> titles = new List<string>();
        if (genders == "Male")
        {
            titles.Add("Mr.");
            titles.Add("Sr.");
        }
        else
        {
            titles.Add("Ms.");
            titles.Add("Mrs.");
        }
        ViewBag.Titles = new SelectList(titles);
        List<string> genderList = new List<string>();
        genderList.Add("Male");
        genderList.Add("Female");
        ViewBag.Genders = new SelectList(genderList);
        return View("Form");
    }
于 2012-06-29T13:02:39.080 回答