1

簡単なテストアプリで ajax を使用しようとしています。ドロップダウン リストが 1 つ、ボタンが 1 つ、ドロップダウンから選択した項目を表示する div が 1 つあります。コードは次のとおりです。

私のコントローラー:

public ActionResult Index()
    {
        if (Session["items"] == null)
        {
            Session["items"] = new List<Item>();
        }

        var items = new Item[] { 
            new Item("1", "one"),
            new Item("2", "two"),
            new Item("3", "three")
        };

        ViewBag.list = Session["items"];
        ViewBag.items = new SelectList(items, "Id", "Value");
        return View(new Item());
    }

    [HttpPost]
    public ActionResult Index(Item item)
    {
        ((List<Item>)Session["items"]).Add(item);
        return RedirectToAction("Index");
    }

アイテムクラス:

public class Item
{
    private string id;
    private string value;

    public Item(string id, string value)
    {
        this.id = id;
        this.value = value;
    }

    public Item()
    {
    }

    public string Id { get { return id; } set { id = value; } }
    public string Value { get { return value; } set { this.value = value; } }
}

私の見解:

@model TestExample.Models.Item
@{
   ViewBag.Title = "Index";
 }
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "itemList" }))
{
  <div id="btn">
    @Html.DropDownListFor(m => m.Id, ViewBag.items as SelectList)
    <input type="submit" value="Add" />
  </div>
}

<div id="itemList">
  @foreach (TestExample.Models.Item item in ViewBag.list as     List<TestExample.Models.Item>)
  {
    <h1>@item.Value</h1>
  }
</div>

問題は、リストからアイテムを選択して追加を押すたびに、ドロップボックスとボタンが複製され、アイテムがdivに表示されることです。これは、最初のクリックの後に発生し、その後、常に 2 つのドロップ ボックスとボタンが表示され、リスト内の項目が重複しています.これの原因は何ですか? どうすれば修正できますか..

ありがとう

4

1 に答える 1