2012-12-22 44 views
1

我想在我的簡單測試應用程序中使用ajax。我有一個下拉列表,一個按鈕和一個div,我將從下拉菜單中選擇的項目展示出來。下面是代碼:.net Razor ajax複製視圖

我的控制器:

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中顯示的項目。這發生在第一次點擊後,我總是看到兩個下拉框和按鈕,並且列表中的項目是重複的。這是什麼原因?我怎樣才能解決這個問題..

感謝

回答

1

AJAX文章後您插入相同的頁面分爲:

<div id="itemList"> 
    ... 
</div> 

這就是爲什麼你有2個按鈕等。在這次行動中:

[HttpPost] 
public ActionResult Index(Item item) { ... } 

您只需要返回部分視圖與您的列表項目。

+0

我只是想到了這一點,但我並不確定。所以我需要做部分視圖,填充ViewBag.list中需要渲染的項目並返回該視圖... 謝謝生病請嘗試:) – stefo0O0o