0

DropDownList を含むフォームを作成しました。オプション名は完全に表示されますが、選択したオプションの ID がコントローラにポストされません。

コントローラーのコードは次のとおりです。

    [HttpGet]
    public ActionResult Insert(int id)
    {

            TemplateRepository repo = new TemplateRepository();
            List<Template> templateList = repo.ListAll().ToList<Template>();

            ViewData["Template"] = new SelectList(templateList, "Id", "Omschrijving");
            return View();
        }

        [HttpPost]
        public ActionResult InsertOrEditSubmit(Klant klant)
        {
            KlantRepository repo = new KlantRepository();
            klant.Naam = Request["Naam"];
            klant.Adres = Request["Adres"];
            klant.Postcode = Request["Postcode"];
            klant.Woonplaats = Request["Woonplaats"];
            klant.Email = Request["Email"];
            klant.Telefoon = Request["Telefoon"];

            repo.SaveOrUpdate(klant);

            return RedirectToAction("Index");
        }

ビュー内のコードは次のとおりです。

@using (Html.BeginForm("InsertOrEditSubmit", "Klant", FormMethod.Post))
{

@Html.DevExpress().Label(
    settings =>
    {
        settings.ControlStyle.CssClass = "label";
        settings.Text = "Template";
        settings.AssociatedControlName = "Template";
    }
).GetHtml() <br />
@Html.DropDownList("Template", ViewData["Template"] as SelectList);

@Html.DevExpress().Button(
    settings =>
    {
        settings.ControlStyle.CssClass = "button";
        settings.Name = "Insert";
        settings.Text = "Toevoegen";
        settings.UseSubmitBehavior = true;
    }
).GetHtml()
@Html.DevExpress().Button(
    settings =>
    {
        settings.ControlStyle.CssClass = "button";
        settings.Name = "Cancel";
        settings.Text = "Terug";
        settings.ClientSideEvents.Click = "function(s, e){ document.location='" + DevExpressHelper.GetUrl(new { Controller = "Gebruiker", Action = "Index" }) + "'; }";
    }
).GetHtml()
}

誰かがIDを投稿しない理由を説明できることを願っています..

4

2 に答える 2

0

name入力用のと一緒に使用すると、idこの問題が解決する場合があることがわかりました。

テンプレートコントロールのレンダリングされたhtmlはどのように見えますか?

于 2012-04-18T12:16:28.470 に答える
0

試してみてください: Request["テンプレート"];

簡単なテストを試してください:

(コントローラ)

ViewData["Test"] = new SelectList(new[] {new {Id = 1, Text = "Test 1"}, new {Id = 2, Text = "Test 2"}, new {Id = 3, Text = "Test 3"}}, "Id", "Text");

(意見)

@Html.DropDownList("Test", ViewData["Test"] as SelectList)

Request["Test"] は、選択された値の Id を返す必要があります。

ただし、ビューが厳密に型指定されている場合、オブジェクト「Klant」の場合、リクエストで値を入力する必要はありません。オブジェクトは自動入力され、オブジェクトにプロパティ Template がある場合は、人口も多い。

于 2012-04-18T10:49:31.710 に答える