2013-10-15 2 views
1

자, 우선, 나는 asp.net mvc와 ajax를 처음 사용합니다. 내가 뭘하려고하는지는 정말 간단합니다.asp.net mvc 4.0 ajax, duplicated content

나는 로그인 한 사용자가 참석할 수있는 이벤트 목록을 표시하는 테이블을 가지고 있습니다. 목록의 각 요소에는 사용자를 이벤트에 연결할 작업을 가리키는 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 조치이것은 아마도 내가 잘못 갈 곳이다 .. 난 그냥 양식을 제출 정상적인 통해,이 작업에 데이터를 게시하는 데 사용, 아니 아약스에서

발췌문 . 나는이 행동에서 아무것도 바꾸지 않았다.

[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); 
} 

, 그리고 왜 내 주요 _Layout 페이지의 전체 내용은 태그의 사본 내부 중복지고?

올바른 방향으로 안내해주세요. :)

답변

2

div에 표시 할 HTML 만 포함 된 PartialView을 반환해야합니다.

[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(); 
     } 

    }