2013-10-15 45 views
1

好的,所以,首先我是新來的asp.net mvc和ajax。我想要做的事情很簡單,asp.net mvc 4.0 ajax,重複的內容

我有一個表格,顯示登錄用戶可以參加的事件列表。列表中的每個元素都有一個ajax.BeginForm(),它指向一個將用戶連接到事件的操作。

當用戶連接到事件時,頁面應該更新,以便在頁面上正確顯示出席人數。

全部,這是正常工作。但是,更新頁面時發生的情況是,我的_Layout.cshtml頁面的全部內容都複製到了我在「UpdateTargetId」中指定要更新的'div id =「tableevent」'的副本中。

從視圖

<div id="tableevents"> 
    <table class="table table-striped table-bordered table-condensed"> 

//I DISPLAY TABLE ITEMS HERE. 

      @using (Ajax.BeginForm("AddAttendantToEvent", "MadklubEvents", new AjaxOptions() 
        { 
         HttpMethod = "post", 
         UpdateTargetId = "tableevents" 
        })) 
        {   
         @Html.Hidden("EventID", item.MadklubEventID); 
         <input type="submit" value="Join!" id="join" class="btn" />        
        } 


     </table> 
    </div> 

AddAttendantToEvent行動這可能是在哪裏出了問題..我以前只是發佈數據這一行動,通過正常的提交表單,沒有AJAX代碼段。我在這個行動中沒有改變任何事情。

[HttpPost] 
[Authorize] 
public ActionResult AddAttendantToEvent(int EventID) 
{ 

    if (ModelState.IsValid) 
    { 
     var uow = new RsvpUnitofWork(); 

     var currentUser = WebSecurity.CurrentUserName; 
     var Event = uow.EventRepo.Find(EventID); 
     var user = uow.UserRepo.All.SingleOrDefault(u => u.Profile.UserName.Equals(currentUser)); 
     user.Events.Add(Event); 
     Event.Attendants.Add(user); 
     uow.Save(); 
     return RedirectToAction("Index"); 
    } 

    { 
     return View(); 
    } 

} 

指數被重定向到行動:這是視圖模型,包含數據,我的表被填充,是從什麼地方。

public ViewResult Index() 
{ 
    ViewModelTest viewmodel = new ViewModelTest(); 
    viewmodel.events = madklubeventRepository.AllIncluding(madklubevent => madklubevent.Attendants).Take(10); 
    viewmodel.users = kitchenuserRepository.All; 

    return View(viewmodel); 
} 

爲什麼DIV得到複製,爲什麼是我的主要_layout網頁的全部內容,得到複製的標籤的副本里面?

請指點我正確的方向! :)

回答

2

您應該返回一個PartialView,其中只包含要在div中顯示的HTML。

[HttpPost] 
    [Authorize] 
    public ActionResult AddAttendantToEvent(int EventID) 
    { 

     if (ModelState.IsValid) 
     { 
      var uow = new RsvpUnitofWork(); 

      var currentUser = WebSecurity.CurrentUserName; 
      var Event = uow.EventRepo.Find(EventID); 
      var user = uow.UserRepo.All.SingleOrDefault(u => u.Profile.UserName.Equals(currentUser)); 
      user.Events.Add(Event); 
      Event.Attendants.Add(user); 
      uow.Save(); 
      ViewModelTest viewmodel = new ViewModelTest(); 
      viewmodel.events = madklubeventRepository.AllIncluding(madklubevent => madklubevent.Attendants).Take(10); 
    viewmodel.users = kitchenuserRepository.All; 

      return PartialView("_Events", viewmodel) 

     } 

     { 
      return View(); 
     } 

    }