2

私は EF を使用した ASP.NET MVC 4 プロジェクトを持っています。私はPartenersを含むテーブルを持っています。このテーブルには、エージェント (part_type=1) とクライアント (part_type=2) の 2 種類のパートナーがあります。Create ビューには、すべてのエージェントを表示する最初の DropDownList、ボタン、および選択したエージェントに対応するすべてのクライアントを表示する 2 番目の 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");//
 }

Q:選択したエージェント 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 に答える